gpt4 book ai didi

python - 子进程忽略 bufsize 参数

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:35 24 4
gpt4 key购买 nike

我试图运行并处理某个 java 程序的标准输出,发现我的 Python 脚本永远在等待。然后我编写了一个新的测试脚本来测试 subprocess 并再次发现运行此脚本时没有看到任何输出:

$ cat test.py 
#!/usr/bin/env python

import subprocess

c = ['/usr/bin/tail', '-f', '/var/log/dmesg']
proc = subprocess.Popen(c,
bufsize=1,
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)

for line in proc.stdout:
print line

为什么subprocess忽略我的bufsize参数?我是否缺少一些中间缓冲来考虑?我希望读取 tail 的前 10 行,然后永远等待,直到新行附加到 dmesg 文件中。我的用户确实有权限,在 bash 上运行命令会给出输出。

tail 更改为 yes 似乎会填充一些缓冲区,并且我可以看到大量输出。

最佳答案

您可以使用iter(proc.stdout.readline,''):

for line in iter(proc.stdout.readline,''):
print line

for line in proc.stdout 在迭代内容之前读取所有输入。

关于python - 子进程忽略 bufsize 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26761252/

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