Error code 모음/4. Python errors

[Python Error] TypeError: an integer is required (got type _io.BufferedWriter)

쟈누이 2020. 12. 30. 09:51
반응형

 

에러 원인

- 파이썬에서 pickel 모듈을 사용할 때, 모듈을 잘못 사용할 경우 나타나는 에러

 

* pickle 이란

- 파이썬 객체 구조의 직렬화와 역 직렬화를 위한 바이너리 프로토콜 구현.

- 《피클링(pickling)》은 파이썬 객체 계층 구조가 바이트 스트림으로 변환되는 절차

- 《역 피클링(unpickling)》은 반대 연산으로, 바이트 스트림을 객체 계층 구조로 복원하는 절차

- 객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈

- 객체의 형태를 유지하기 때문에 byte 방식으로 저장되며 이럴때는 'wb' 를 open 모듈에 사용해야됨

 

에러 해결

- 간단했음 dumps --> dump 로 바꾸어줌 

출처  : stock overflow - 자세한 내용 아래 링크 참고

* dumps(obj, protocol=None, *, fix_imports=True)

- dumps( ) 는오브젝트를 바이트로 반환하고 이를 리턴해주는 함수

- 즉, 객체 오브젝트의 피클 된 표현을 파일에 쓰는 대신 bytes 객체로 반환

* dump(obj, file, protocol=None, *, fix_imports=True)

- 객체 obj 의 피클 된 표현을 열린 파일 객체 file 에 쓰는 함수

- Pickler(file, protocol).dump(obj) 의 형태와 같이 쓰임

 

참고 링크

1. 에러 해결

stackoverflow.com/questions/45991303/typeerror-an-integer-is-required-got-type-io-bufferedwriter-using-pickle

 

TypeError: an integer is required (got type _io.BufferedWriter) using pickle

the code: import pickle test = 3 >>> with open('test', 'wb') as file: ... pickle.dumps(test, file) and error reported unexpectedly. Traceback (most recent call last): File "<s...< p=""> </s...<>

stackoverflow.com

2. pickle이란

docs.python.org/ko/3/library/pickle.html

 

pickle — 파이썬 객체 직렬화 — Python 3.9.1 문서

pickle — 파이썬 객체 직렬화 소스 코드: Lib/pickle.py pickle 모듈은 파이썬 객체 구조의 직렬화와 역 직렬화를 위한 바이너리 프로토콜을 구현합니다. 《피클링(pickling)》은 파이썬 객체 계층 구조가

docs.python.org

 

반응형