Python 3에서는 처리 방식에 상당한 변화가 도입되었습니다. 파일 내용. 이로 인해 이전 버전의 Python에서 코드를 마이그레이션할 때 일반적인 "TypeError: 'str'이 아닌 바이트열류 객체가 필요합니다."와 같은 오류가 발생할 수 있습니다.
문자열을 수행하려고 할 때 오류가 발생합니다. 일반적으로 바이너리 모드(예: '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
또는 파일을 텍스트 모드('rb' 대신 'r')로 열 수 있습니다. 그러면 데이터가 다음과 같이 자동으로 디코딩됩니다. 읽습니다:
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: 바이트열류 객체가 필요합니다'를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!