有一個襯墊python腳本:從另一個python腳本在Windows上運行Python腳本7
# inner.py
print "hello"
當我創建另一個腳本:
import os
os.system('python inner.py > out.txt')
,並在命令行中執行它,一切正常如預期的那樣,「你好」是寫在out.txt
當我用以下代替os.system參數:
os.system('inner.py > out.txt')
並執行腳本,我得到以下錯誤:
close failed in file object destructor:
Error in sys.excepthook:
Original exception was:
如果我不重定向輸出,因此我得到「你好」在這兩種情況下控制檯。
我在Windows 7 64位。
爲什麼我得到一個錯誤?如果要重定向文件使用subprocess.check_call
的輸出和標準輸出重定向到文件對象
execfile('inner.py') # in the outer script
如果你打開一個命令窗口,你可以在沒有指定python的情況下運行python腳本嗎?即'C:> runme.py'的作品? (更具體地說'runme.py> somefile.txt'工作? – 2015-04-02 15:38:02
99.99%的時間,你不應該使用'system'來執行其他的python腳本,你應該使用'import'。 – Kevin 2015-04-02 15:40:07
正如Joran Beasley所問,是你確定你試圖用os.system()運行的命令確實有效,如果你嘗試從shell執行確切的命令,它是否按照你想要的那樣進行操作?正如凱文指出的那樣,可能還有其他方法可以完成這個任務這是更pythonic – 2015-04-02 15:49:17