首頁 > 後端開發 > Python教學 > 如何解決Python處理文件內容時的'TypeError: a bytes-like object is required”?

如何解決Python處理文件內容時的'TypeError: a bytes-like object is required”?

Susan Sarandon
發布: 2024-12-02 17:54:12
原創
624 人瀏覽過

How to Resolve Python's

在Python 3 中處理檔案內容錯誤:解決「TypeError: a bytes-like object is required」

Python 3 在處理方式上引入了重大變更檔內容。從早期版本的 Python 遷移程式碼時,這可能會導致錯誤,例如常見的「TypeError: a bytes-like object is required, not 'str'」。

嘗試執行 string- 時會發生錯誤類似於位元組物件上的操作,通常是由於以二進位模式開啟檔案(例如“rb”)而產生的。讓我們檢查一下可能出現此錯誤的常見場景:

with open(fname, 'rb') as f:
    lines = [x.strip() for x in f.readlines()]

for line in lines:
    tmp = line.strip().lower()
    if 'some-pattern' in tmp: continue
    # ... code
登入後複製

在此範例中,檔案 fname 以二進位模式打開,這表示從中讀取的所有資料都作為位元組物件傳回。但是,後續行變數會被 in 運算子視為字串。

要解決該錯誤,可以解碼位元組物件或以文字模式而不是二進位模式開啟檔案。

解碼位元組物件

要將位元組物件tmp解碼為字串,可以使用decode()方法:

if b'some-pattern' in tmp.decode(): continue
登入後複製

以文字模式開啟檔案

或者,可以以文字模式開啟檔案(「r」而不是「rb」),這會自動將資料解碼為它是:

with open(fname, 'r') as f:
    lines = [x.strip() for x in f.readlines()]

for line in lines:
    tmp = line.strip().lower()
    if 'some-pattern' in tmp: continue
    # ... code
登入後複製

透過遵循這些準則,您可以確保您的Python 3 程式碼正確處理檔案內容並避免「TypeError:需要類似位元組的物件」錯誤。

以上是如何解決Python處理文件內容時的'TypeError: a bytes-like object is required”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板