[英]Splitting a b'' returns error in Python3.7
目前我正在用 Python3 編寫腳本。 從那以后,我需要調用一個用 Python2 編寫的腳本。
我正在使用subprocess
執行以下操作:
>>> import subprocess
>>> my_command = 'python,script_in_py2.py,arg1,arg2'
>>> process = subprocess.Popen(my_command.split(','), stdout = subprocess.PIPE)
>>> output, error = process.communicate()
只是為了澄清, arg1
和arg2
可以有空格,這就是為什么我用逗號分隔命令的原因。
運行該部分后, output
接收,顯然是 Python2 腳本的輸出。 它看起來像:
b'output\\nOf\\nScript\\nIn\\nPython2\\nIs\\nHere\\n'
這對我來說看起來像一個字節對象。 但是,在調用>>> output.split('\\n')
時,出現錯誤:
TypeError: a bytes-like object is required, not 'str'
此外,在嘗試>>> type(output)
它返回<class 'bytes'>
,這只會讓我更加困惑。
關於為什么會發生這種情況的任何想法?
問題不在於您嘗試拆分的對象類型錯誤,問題在於您嘗試拆分的分隔符與您嘗試拆分的對象的類型不同。
>>>b'a\nb'.split('\n')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a bytes-like object is required, not 'str'
>>>b'a\nb'.split(b'\n')
[b'a', b'b']
如你所見,如果你想拆分一個 bytes-like object,你需要傳遞一個 bytes-like object 作為參數。 只需將.split('\\n')
更改為.split(b'\\n')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.