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
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python의 try-except-else문 (0) | 2021.12.13 |
---|---|
파이썬 try-else절의 용도 (0) | 2021.12.13 |
Python 스크립트를 프로파일링 하는 방법 (0) | 2021.12.13 |
파이썬 파일 확장자 .pyc .pyd .pyo가 의미하는 것 (0) | 2021.12.13 |
프로그램을 실행하거나 Python에서 시스템 명령을 호출하는 방법 (0) | 2021.12.13 |