gpt4 book ai didi

python-3.x - 为什么 Python 3 换行符\n 不适用于打印和子进程 Popen 标准输出?

转载 作者:行者123 更新时间:2023-12-04 02:20:41 27 4
gpt4 key购买 nike

Python 3.7.1:调用 grep使用 subprocess.Popen 从日志文件中提取错误。打印到屏幕时,不处理换行符\n。

示例

a = subprocess.Popen(["grep", "ERR", "errors.log"], stdout=subprocess.PIPE)
print(a.stdout.read())

输出
ERR 1 ret: 31113\nERR 2 ret: 35523\nERR 3 ret: 3810 (etc.)

无法想象为什么不处理换行符。我希望这样:
ERR 1 ret: 31113
ERR 2 ret: 35523
ERR 3 ret: 3810
(etc.)

一直在网上寻找答案,但没有运气。谢谢:^)

引用:

How would I specify a new line in Python?
Python Popen grep

最佳答案

指定用于解码子进程输出的编码。我不能告诉你你的 errors.log文件被编码,但试试“utf-8”:

a = Popen(["grep", "ERR", "errors.log"], stdout=subprocess.PIPE, encoding='utf-8')

关于python-3.x - 为什么 Python 3 换行符\n 不适用于打印和子进程 Popen 标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53196795/

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