gpt4 book ai didi

python - 从 TextIOWrapper 读取会导致 UnicodeDecodeError

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:38 25 4
gpt4 key购买 nike

我尝试逐行读取子流程:

proc = subprocess.Popen(self.monitor_logcat_cmd, shell=True, stdout=subprocess.PIPE,
bufsize=1, universal_newlines=True)

while proc.poll() is None:
line = proc.stdout.readline()
print("Process line: " + str(line))

它有效,但在某些时候我收到错误:

Exception in thread Thread-14:
Traceback (most recent call last):
File "/Users/F1sherKK/anaconda3/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/Users/F1sherKK/Dev/Python/AutomationTestSupervisor/session/SessionThreads.py", line 46, in run
line = proc.stdout.readline()
File "/Users/F1sherKK/anaconda3/lib/python3.6/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 in position 89: invalid start byte

有没有办法为子进程的标准输出添加/指定编码?我想添加错误“忽略”。

还有其他方法可以解决这个问题吗?

最佳答案

您可以将 Popen()errors 关键字参数设置为 'ignore'。来自 documentation :

If encoding or errors are specified, or universal_newlines is true, the file objects stdin, stdout and stderr will be opened in text mode using the encoding and errors specified in the call or the defaults for io.TextIOWrapper.

但是,很明显您的进程不使用 UTF-8 对其输出进行编码。您可能想弄清楚是否 a) 它可以配置为产生不同的编码,或者 b) 使用什么编码并进行配置(使用 Popen() 的 encoding 关键字参数)。

关于python - 从 TextIOWrapper 读取会导致 UnicodeDecodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43747482/

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