繁体   English   中英

在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM