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中文網其他相關文章!