关于“如何将输出写入文本文件”这一主题,有多种主题可供选择。 但我的问题不同,因为相关命令的输出是连续的。
我想做的是,将命令 cgps -s
的输出写入文件 aaa.txt
这是代码,
import signal
import os
import subprocess
p = subprocess.Popen(["cgps", "-s", ">> aaa.txt"], stdout=subprocess.PIPE,shell=True, preexec_fn=os.setsid)
os.killpg(p.pid, signal.SIGTERM)
代码根本不起作用,没有创建名称为 aaa.txt
的文件
当我通过终端执行这个命令时,
cgps -s > aaa.txt
然后我必须按 CTRL+C 来终止将输出写入输出文件,因为输出是连续的。
有没有办法只捕获一个输出并将其写入文件并使用 Python 或使用命令行终止它?
最佳答案
所以你正在尝试创建一个管道。试试这个:
import subprocess
p = subprocess.Popen(["cgps", "-s"], stdout=subprocess.PIPE)
with open("aaa.txt", "w") as f:
while True:
line = p.stdout.readline()
if not line:
break
if some_condition(): # <-- check whether you have enough output
p.terminate()
break
f.writeline(line)
p.wait()
关于python - Linux,将输出写入文件并使用 Python 终止它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20613032/