我正在尝试运行一个外部程序(在这种情况下只是 python -V)并捕获内存中的标准错误。
如果我重定向到磁盘,它会起作用:
import sys, os
import subprocess
import tempfile
err = tempfile.mkstemp()
print err[1]
p = subprocess.call([sys.executable, '-V'], stderr=err[0] )
但这不好玩。然后我需要将该文件读入内存。
我以为我可以创建一些内存中的东西,它就像使用 StringIO 的文件一样,但这次尝试失败了:
import sys, os
import subprocess
import tempfile
import StringIO
err = StringIO.StringIO()
p = subprocess.call([sys.executable, '-V'], stderr=err )
我有:
AttributeError: StringIO instance has no attribute 'fileno'
附言。一旦这个工作我也想捕获标准输出,但我想那是一样的。ps2。我在 Windows 和 Python 2.7.3 上尝试了上述方法