有一个线程python脚本:
# inner.py
print "hello"
当我创建另一个脚本时:
import os
os.system('python inner.py > out.txt')
并从命令行执行它,一切按预期工作,“hello”写在out.txt
当我用:
替换os.system参数时os.system('inner.py > out.txt')
并执行脚本,我收到以下错误:
close failed in file object destructor:
Error in sys.excepthook:
Original exception was:
如果我不重定向输出,我会在控制台上得到“hello”。
我在Windows 7 64位上。
为什么会出错?
答案 0 :(得分:0)
改为使用execfile
功能:
execfile('inner.py') # in the outer script
答案 1 :(得分:0)
如果要重定向文件的输出,请使用subprocess.check_call
并将标准输出重定向到文件对象:
from subprocess import check_call
with open("out.txt",'w') as f:
check_call(["python", "/path/to/inner.py"], stdout=f)
除非您将sys.stdout
重定向到文件对象,否则它将无法用于您的打印示例,但如果您实际上具有在其他模块中返回某些内容的函数,则可以导入它们,然后将输出写入文件而不使用子进程。