如何使用与换行符

时间:2016-04-18 23:15:57

标签: python subprocess

我想我可以使用from J.F. Sebastian's answer in another thread逐行读取子进程,使用行缓冲区

p = Popen(["command", "args"], stdout=PIPE, bufsize=1)
with p.stdout:
    for line in iter(p.stdout.readline, b''):
        print(line, end='\n')

我试图解决的问题是我的输出没有换行符,但使用特殊字符(例如“#”)来表示终止,我想在打印时将其视为换行符。

1 个答案:

答案 0 :(得分:2)

你可以一次读取一个字符来检查分隔符:

p = Popen(["command", "args"], stdout=PIPE, universal_newlines=True)
tmp = ""
delims = {"#", "!"}
for ch in iter(lambda: p.stdout.read(1), ""):
    if ch in delims:
        print(tmp)
        tmp = ""
    else:
        tmp += ch

不是最漂亮的解决方案,但如果你有多个分隔符,我没有看到很多其他方法来做到这一点。