2015-04-04 77 views
1

我正在在Python 3.4的通常錯誤,當我調用命令,說net view的形式:subprocess.call("net view")返回error code 0(即成功)蟒蛇subprocess.call錯誤時,管到文件

但是,當我做subprocess.call("net view > targets.txt")它返回error code 1(不成功)。

爲什麼這個錯誤出現在python中,並且有沒有辦法以類似的方式將輸出傳輸到文件?

回答

3

做你想要什麼,最簡單的方法是stdout重定向到一個文件對象:

from subprocess import check_call 
with open("targets.txt","w") as f: 
    check_call(["net", "view"], stdout=f) 

check_call將引發一個錯誤any non-zero退出狀態。

+0

明白了,很好地完成了! – DonD 2015-04-04 22:45:10

+0

glas @ DonD,不用擔心,很高興幫助 – 2015-04-04 22:49:11

+2

@DonD:錯誤發生的原因是因爲'>'是一個shell重定向操作符。 'subprocess'不會生成一個shell,除非你明確地詢問它。此答案顯示將子進程stdout重定向到文件(不使用shell)的正確方法。 – jfs 2015-04-05 10:00:54