【发布时间】:2021-03-19 19:02:42
【问题描述】:
我正在使用这样的子进程从 shell 获取输出。
with subprocess.Popen(['bash', '-c', '. /root/myFile.sh;',
' func ' ], stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
bufsize=1,universal_newlines=True) as proc_launch:
for line in proc_launch.stdout:
print(line, end='')
它是逐行输出,而我想以最后 3 或 4 行加上当前行的方式获得输出。有什么方法可以干净地做到这一点吗?
【问题讨论】:
-
要识别最后 3 行:首先您必须将所有行放到某个列表中,然后将该列表切片
[-3:] -
@furas 不能像缓冲区等那样完成吗?不希望用户等待太久
-
列表是某种缓冲区
-
@furas 然后增加buff大小在这里没有帮助吗?
-
缓冲区大小与此无关 -
stdout(与for一起使用)总是只给出一行,您必须自己在某些列表中记住这一行并仅显示 [- 3:] 从这个列表中。
标签: python python-3.x bash shell subprocess