我試圖通過行改爲子行:從TextIOWrapper讀引起的UnicodeDecodeError
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
有什麼辦法來添加/指定編碼子進程的標準輸出?我想補充錯誤「忽略」。
有沒有其他方法可以解決這個問題?
那麼過程產生什麼字節,關掉'universal_newlines'?你知道過程產生什麼編碼嗎? –
'monitor_logcat_cmd'包含什麼?什麼命令在shell中運行?你是否設置了「LANG」或「LC_CTYPE」環境變量? –
monitor_logcat_cmd是'adb -s 5554 logcat'它實時從Android設備讀取日誌。它可以包含我猜測的各種編碼。例如,日誌中可以有表情符號。我沒有設置任何env變量。 – F1sher