如何通过管道将子流程调用传递到文本文件?

子流程调用([“/home/myuser/run.sh”、“/tmp/ad_xml”、“/tmp/video_xml”])

现在我有一个我运行的脚本。当我运行它,它点击这一行,它开始打印东西,因为run.sh中有打印

我如何将其也传输到文本文件?(如有可能,也可打印)

如果要将输出写入文件,可以使用subprocess.call的stdout参数

两者都需要

  • None(默认情况下,stdout从父级(脚本)继承)
  • 子流程管道(允许您从一个命令/流程管道到另一个命令/流程)
  • 文件对象或文件描述符(您希望将输出写入文件的内容)

您需要使用类似于open的方法打开文件,并将对象或文件描述符整数传递给call

f=open("blah.txt","w")
子流程调用(["/home/myuser/run.sh","/tmp/ad\u xml","/tmp/video\u xml"],stdout=f)

我猜任何像对象这样的有效文件都可以工作,比如套接字(gasp:),但我从未尝试过

正如marcog在评论中提到的,您可能也想重定向stderr,您可以使用stderr=subprocess.stdout将其重定向到与stdout相同的位置。上述任何一个值都可以工作,您可以重定向到不同的位置

发表评论