从Windows 7上的另一个python脚本运行python脚本

时间:2015-04-02 15:31:46

标签: python windows

有一个线程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位上。

为什么会出错?

2 个答案:

答案 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重定向到文件对象,否则它将无法用于您的打印示例,但如果您实际上具有在其他模块中返回某些内容的函数,则可以导入它们,然后将输出写入文件而不使用子进程。