当前位置: 首页 > 面试题库 >

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

子车雅珺
2023-03-14
问题内容

subprocess.call([“/home/myuser/run.sh”, “/tmp/ad_xml”, “/tmp/video_xml”])

现在,我有了运行的脚本。当我运行它并到达此行时,它开始打印内容,因为run.sh中有打印内容。

如何将其也管道传输到文本文件?(如果可能,还可以打印)


问题答案:

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

它需要Nonesubprocess.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。上述任何一个值也可以使用,您可以重定向到其他位置。



 类似资料:
  • 问题内容: 我试图编写一个程序来通过args读取文本文件,但是当我运行它时,它总是说找不到该文件,即使我将其放置在与我正在运行的main.java相同的文件夹中。有谁知道我的问题的解决方案或更好的阅读文本文件的方法? 问题答案: 请勿在中使用相对路径。 它将变成相对于当前工作目录的,这取决于您如何运行应用程序,而该方法又是无法从应用程序内部进行控制的。这只会导致可移植性麻烦。如果从Eclipse内

  • 打印板到控制台: 我希望用户对RaisedButton的选择显示一个“X”,而计算机的选择显示一个“O”。

  • 我有一个集群,有两个工人和一个主人。为了启动master和workers,我在master计算机中使用和。然后,master UI向我显示奴隶还活着(所以,到目前为止一切正常)。当我想使用时,问题就出现了。 我在本地计算机中执行以下命令: 但是会弹出以下错误: 我一直在研究stack overflow和Spark的文档,似乎应该将命令的指定为“绑定jar的路径,包括应用程序和所有依赖项。URL必须

  • 问题内容: 我在未传递到javascript文件的玉模板文件(index.jade)中声明的变量(config)遇到问题,这使我的javascript崩溃了。这是文件(views / index.jade): 这是我的app.js(服务器端)的一部分: 这是我的javascript文件崩溃的一部分(public / javascripts / app.js): 我正在本地主机(我自己的机器)上的开

  • 开头是我的jsp页面代码: 我想从

  • 问题内容: 我想将回调传递给加倍嵌套的组件,并且尽管我能够有效地传递属性,但我不知道如何将回调绑定到正确的组件上才能被触发。我的结构如下所示: 单击列表项时应触发一个回调,这是OutermostComponents方法“ onUserInput”,但相反,我得到“未捕获的错误:未定义不是函数”。我怀疑问题出在我如何在第一个内部渲染SecondNestedComponent并将其传递给回调函数。代码