2015-04-04 61 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