为了账号安全,请及时绑定邮箱和手机立即绑定

如何将子流程调用传递到文本文件?

如何将子流程调用传递到文本文件?

月关宝盒 2019-11-28 13:01:32
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml",  "/tmp/video_xml"])现在,我有了运行的脚本。当我运行它并到达此行时,它开始打印内容,因为run.sh中有打印内容。如何将其也管道传输到文本文件?(如果可能,还可以打印)
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

如果要将输出写入文件,可以使用stdout -argument of subprocess.call。


它需要None,subprocess.PIPE个文件对象或一个文件描述符。第一个是默认值,stdout是从父级(您的脚本)继承的。第二个允许您从一个命令/进程到另一个命令/进程。第三和第四项是您想要的,将输出写入文件。


您需要使用类似的文件打开文件,open然后将对象或文件描述符整数传递给call:


f = open("blah.txt", "w")

subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml",  "/tmp/video_xml"], stdout=f)

我猜测任何有效的类似文件的对象都可以工作,例如套接字(gasp :)),但我从未尝试过。


正如marcog在评论中提到的那样,您可能还希望重定向stderr,您可以使用将其重定向到与stdout相同的位置stderr=subprocess.STDOUT。上述任何一个值也可以使用,您可以重定向到其他位置。


查看完整回答
反对 回复 2019-11-28
  • 2 回答
  • 0 关注
  • 531 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信