簡體   English   中英

拆分 b'' 在 Python3.7 中返回錯誤

[英]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()

只是為了澄清, arg1arg2可以有空格,這就是為什么我用逗號分隔命令的原因。

運行該部分后, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM