首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Popen()不会将stdout重定向到文件

Popen()不会将stdout重定向到文件
EN

Stack Overflow用户
提问于 2022-05-18 09:14:44
回答 1查看 52关注 0票数 0

我有一个python程序,它使用Popen()调用子进程。这个python程序是从一个C程序中调用的,它使用Python。除了子进程没有将输出重定向到文件这一事实之外,一切都很好。如果我只使用Python程序,它就会像它应该做的那样工作。如果我从C调用同一个程序,它就不会调用。

有线索吗?

代码语言:javascript
运行
复制
fout = open('fout.txt','w+')
self.process = Popen(starting_cmd,stdout=fout)
EN

回答 1

Stack Overflow用户

发布于 2022-05-18 09:25:56

有了这个最小的信息,我不能帮你很多,但我建议你这样做:

代码语言:javascript
运行
复制
with open("fout.txt","a") as out:
    subprocess.Popen("starting_cmd",stdout=out)

  • 进程不需要读取信息,所以我们不需要在读取模式下打开文件(最好的做法是将对文件的访问限制在必需的范围内)。因此,您可以只使用fout.txt).
  • The或a替换w+ (添加w with是为了确保在out超出作用域时文件被关闭,这可能有助于使结果在文件中可见。

下面是一个工作示例(在python3中):

代码语言:javascript
运行
复制
import subprocess
with open("fout.txt", "a") as out:
    subprocess.Popen("ls", stdout=out)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72286349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档