![](/img/trans.png)
[英]Subprocess not capturing the output of stdout storing it inside a variable in Python
[英]capturing output in a variable in python
这是一个愚蠢的问题,但它给我带来了很多麻烦。 我正在尝试将输出捕获到变量中
a='jobid'
p=exec(a)
print(p)
output:None
你们可能会说为什么不直接使用变量 'a' 而不是执行它,但我在它旁边有一个级联函数。 而且我不能使用变量 'a'。变量 'a' 中的值 'job ID' 来自数据框并且需要捕获值,因为 'job ID' 是我代码中的一个参数。 任何人都可以帮我吗?
我也试过下面的代码:
a='jobid'
p=exec('print(jobid)')
print(p)
但它没有成功。
您可以重定向sys.stdout
并使用StringIO
对象来捕获值:
import sys
from io import StringIO
something = lambda:print('I have been run')
old_stdout = sys.stdout
sys.stdout = catcher = StringIO()
exec('something()')
sys.stdout = old_stdout
print(catcher.get_value())
或者,为了安全起见,您可以使用contextlib.redirect_stdout
来做同样的事情:
from contextlib import redirect_stdout
catcher = StringIO()
with redirect_stdout(catcher):
exec('something()')
print(catcher.getvalue())
希望对你有帮助。
请尝试以下操作:
b='a="jobid"\nprint(a)'
exec(b)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.