python exec 函数不返回 echo 语句

python exec function not returning echo statement

我的设置如下所示:

from io import StringIO
from contextlib import redirect_stdout

f = StringIO()
with redirect_stdout(f):
    exec("""'echo "test"'""")
s = f.getvalue()
print("return value:",s)

为什么return值s不包含“test”是有原因的?我怎样才能访问这个值?

exec 的第一个参数应该是

The source may be a string representing one or more Python statements
or a code object as returned by compile()

你做到了

exec("""'echo "test"'""")

即交付给 exec 一些无效的 python 声明。

exec 执行 Python 代码;它不等同于 os.system.

您正在执行的是 Python 表达式语句 'echo "test"',它的计算结果只是字符串。表达式有值,但表达式语句忽略表达式产生的值。在这种情况下,没有任何内容写入标准输出。

你想要 subprocess.check_output:

>>> subprocess.check_output("""echo 'test'""", shell=True).decode().rstrip('\n')
'test'