gpt4 book ai didi

python - 将 subprocess.Popen 输出附加到文件?

转载 作者:IT老高 更新时间:2023-10-28 20:54:12 37 4
gpt4 key购买 nike

我可以成功地将我的输出重定向到一个文件,但这似乎覆盖了文件的现有数据:

import subprocess
outfile = open('test','w') #same with "w" or "a" as opening mode
outfile.write('Hello')
subprocess.Popen('ls',stdout=outfile)

将从文件中删除 'Hello' 行。

我想一种解决方法是将输出作为字符串或其他东西存储在其他地方(不会太长),然后用 outfile.write(thestring) 手动附加它 - 但我是想知道我是否在模块中遗漏了一些有助于实现这一点的东西。

最佳答案

您当然可以将 subprocess.Popen 的输出附加到文件中,我每天都会使用它。这是我的做法:

log = open('some file.txt', 'a')  # so that data written to it will be appended
c = subprocess.Popen(['dir', '/p'], stdout=log, stderr=log, shell=True)

(当然,这是一个虚拟的例子,我没有使用 subprocess 来列出文件...)

顺便说一句,其他行为类似于文件的对象(特别是 write() 方法)可以替换此 log 项,因此您可以缓冲输出,并执行随心所欲(写入文件、显示等)[但这似乎并不容易,请参阅下面的评论]。

注意:可能具有误导性的是,subprocess 出于某种我不明白的原因,会在您想要编写的内容之前编写。所以,这是使用它的方法:

log = open('some file.txt', 'a')
log.write('some text, as header of the file\n')
log.flush() # <-- here's something not to forget!
c = subprocess.Popen(['dir', '/p'], stdout=log, stderr=log, shell=True)

所以提示是:不要忘记flush输出!

关于python - 将 subprocess.Popen 输出附加到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7389158/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com