Python中文
首页
教程
问答
标签
搜索
登录
注册
以python代码形式执行字符串并存储输出+错误
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>目前我正在用Python为自己编写一个小型IDE,并希望以Python代码的形式执行编辑器的文本。我将编辑器的文本作为字符串获取。我想执行代码,保存输出 &;字符串变量(<code>o</code>和<code>e</code>)中出现错误,然后我在IDE中呈现输出</p> <p>只要我没有任何错误(<code>my_code</code>),它就可以正常工作。一旦我执行了包含错误的代码(<code>my_code_with_error</code>-注释如下),代码似乎没有返回并且“无声”崩溃。事实上,我甚至在Pycharm中得到了<code>Process finished with exit code 0</code>——可能是因为我将<code>sys.stdout</code>切换到了我自己的<code>StringIO</code>实例</p> <p>如何执行代码字符串,即使它有错误,然后将错误/正常输出保存在变量中作为字符串</p> <pre><code>import sys from io import StringIO # create file-like string to capture output codeOut = StringIO() codeErr = StringIO() print("Start") my_code = """ print("Hello World!") """ my_code_with_error = """ print("Hello world!") print(avfsd) # error -> printing a variable that does not exist. """ print("Executing code...") # capture output and errors sys.stdout = codeOut sys.stderr = codeErr exec(my_code ) # this works fine # exec(my_code_with_error) # as soon as there is an error, it crashes silently. # restore stdout and stderr sys.stdout = sys.__stdout__ sys.stderr = sys.__stderr__ print("Finished code execution.") e = codeErr.getvalue() o = codeOut.getvalue() print("Error: " + e) print("Output: " + o) codeOut.close() codeErr.close() </code></pre> <p>PS:2009年有一个很老的问题,我在那里得到了一些代码,但是找不到任何关于这个主题的最新问题。(<a href="https://stackoverflow.com/questions/701802/how-do-i-execute-a-string-containing-python-code-in-python?answertab=votes#tab-top">How do I execute a string containing Python code in Python?</a>)</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>尝试在Try/except块中包围执行代码</p> <pre><code>try: exec(my_code) except: print("Unexpected error:", sys.exc_info()[0]) raise </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在python中从数据帧列中删除分类值?
2 回答
如何在python中从数据帧列表中删除引号
7 回答
如何在python中从数据帧创建列表
5 回答
如何在Python中从数据帧创建嵌套的JSON
8 回答
如何在Python中从数据帧显示wordcloud
10 回答
如何在Python中从数据帧的时间戳中删除字符
4 回答
如何在Python中从数据帧绘制简单绘图?
2 回答
如何在python中从数据帧行提取具有特定长度的范围?
9 回答
如何在python中从数据帧设置dict中的值
9 回答
如何在Python中从数据库中获得一个结果
9 回答
如何在python中从数据框中绘制分类条形图
4 回答
如何在Python中从数据框中选择特定细节?
1 回答
如何在python中从数据集中删除unicode
7 回答
如何在python中从数据集中删除某些数值?
3 回答
如何在python中从数据集中选择行
3 回答
如何在Python中从数组中删除元素
1 回答
如何在python中从数组中删除单个倒逗号?
3 回答
如何在python中从数组中删除对象?
8 回答
如何在python中从数组中删除引号
4 回答
如何在python中从数组中删除所有最小值
8 回答