프로그래밍 언어/Python

TypeError: a bytes-like object is required, not 'str' when writing to a file in Python3

Rateye 2021. 12. 13. 00:29
728x90
반응형
질문 : TypeError : Python3에서 파일에 쓸 때 'str'이 아닌 바이트 열류 객체가 필요합니다.

저는 최근에 Py 3.5로 마이그레이션했습니다. 이 코드는 Python 2.7에서 제대로 작동했습니다.

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

3.5로 업그레이드 한 후 다음을 얻었습니다.

TypeError: a bytes-like object is required, not 'str'

마지막 줄 (패턴 검색 코드)에 오류가 있습니다.

.decode() 함수를 사용해 보았습니다.

if tmp.find('some-pattern') != -1: continue

-아무 소용이 없습니다.

거의 모든 2 : 3 문제를 신속하게 해결할 수 있었지만이 작은 진술은 나를 괴롭 힙니다.

답변

바이너리 모드에서 파일을 열었습니다.

with open(fname, 'rb') as f:

이것은 파일에서 읽은 모든 데이터가 str 아닌 bytes 객체로 반환됨을 의미합니다. 그런 다음 격리 테스트에서 문자열을 사용할 수 없습니다.

if 'some-pattern' in tmp: continue

대신 tmp 에 대해 테스트 bytes 객체를 사용해야합니다.

if b'some-pattern' in tmp: continue

'rb' 모드를 'r' 로 바꾸어 파일을 텍스트 파일로 엽니 다.

출처 : https://stackoverflow.com/questions/33054527/typeerror-a-bytes-like-object-is-required-not-str-when-writing-to-a-file-in
728x90
반응형