Python subprocess.call函数不重定向输出

时间:2014-08-26 00:42:31

标签: python linux bash shell

我试图在python文件中运行一个名为nn.sh的shell脚本(它随着时间的推移不断运行Linux命令)。我使用以下代码:

from subprocess import call, Popen, PIPE
call(['/bin/sh', 'nn.sh', '172.20.125.44', '10', '>>', 'log.txt'])

此代码应该使用输入nn.sh172.20.125.44运行10,并将结果存储在文件log.txt中。当我运行这个Python脚本时,它只显示在屏幕上运行nn.sh的结果,并且它不会将它们保存在填充log.txt中。但是,如果我输入

/bin/sh nn.sh 172.20.125.44 10 >> log.txt

在命令行中,它正确地将所有数据保存到文件log.txt中。关于出了什么问题的任何想法?

1 个答案:

答案 0 :(得分:4)

您不能在子流程调用中使用>>,而是使用stdout参数:

with open("log.txt", "at") as log:
    call(['/bin/sh', 'nn.sh', '172.20.125.44', '10'], stdout = log)