How do I pipe a subprocess call to a text file?
1 | subprocess.call(["/home/myuser/run.sh","/tmp/ad_xml", "/tmp/video_xml"]) |
现在我有一个我运行的脚本。 当我运行它并且它击中这一行时,它开始打印东西,因为run.sh中有打印。
如何将其传输到文本文件? (还可以打印,如果可能的话)
如果要将输出写入文件,可以使用
它需要
您需要打开一个类似
1 2 | f = open("blah.txt","w") subprocess.call(["/home/myuser/run.sh","/tmp/ad_xml", "/tmp/video_xml"], stdout=f) |
我猜测任何有效的文件类对象都可以工作,就像socket(gasp :)),但我从来没有尝试过。
正如marcog在评论中提到的那样,您可能也希望重定向stderr,您可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0 |
所以...
1 | subprocess.call(["/home/myuser/run.sh","/tmp/ad_xml", "/tmp/video_xml"], stdout=myoutput) |
然后你可以用
此外,您可以更接近像这样的管道输出。
1 | dmesg | grep hda |
将会:
1 2 3 | p1 = Popen(["dmesg"], stdout=PIPE) p2 = Popen(["grep","hda"], stdin=p1.stdout, stdout=PIPE) output = p2.communicate()[0] |
python手册页上有很多可爱,有用的信息。