python - Linux,将输出写入文件并使用 Python 终止它

标签 python linux

关于“如何将输出写入文本文件”这一主题,有多种主题可供选择。 但我的问题不同,因为相关命令的输出是连续的。

我想做的是,将命令 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/

相关文章:

python - 为什么 pandas 格式化我的日期时间 1999-12-02 19 :30:00+00:00

c - 让父进程等待其子进程的正确方法是什么?

python - 我们可以用 SQLAlchemy 进行相关查询吗

python - 关于处理子图的布局

linux - 根据另一个 .csv 中的模式从 .csv 中排除行

c++ - 如何使 C++ 程序使用超过 4GB RAM?

linux - 发送 HTTP 请求并接收输出。 x86 Linux 汇编

linux - ssl/qsslsocket_openssl.cpp :1414: error: q_ssl_ctrl was not declared in this scope error

python - 使用pdfkit python在第一页上使用不同的边距

python - 如何在Python中将某些内容修改为 "un-export"