Python 데이터 지속성-객체 직렬화

Python의 내장 open () 함수가 반환하는 Python의 내장 파일 객체에는 한 가지 중요한 단점이 있습니다. 'w'모드로 열면 write () 메서드는 문자열 객체 만 허용합니다.

즉, 데이터가 문자열이 아닌 형식으로 표현 된 경우 내장 클래스 (숫자, 사전, 목록 또는 튜플) 또는 기타 사용자 정의 클래스의 객체는 파일에 직접 쓸 수 없습니다. 쓰기 전에 문자열 표현으로 변환해야합니다.

numbers=[10,20,30,40]
   file=open('numbers.txt','w')
   file.write(str(numbers))
   file.close()

바이너리 파일의 경우 인수 write()메소드는 바이트 객체 여야합니다. 예를 들어 정수 목록은 다음과 같이 바이트로 변환됩니다.bytearray() 함수를 사용한 다음 파일에 기록합니다.

numbers=[10,20,30,40]
   data=bytearray(numbers)
   file.write(data)
   file.close()

각 데이터 유형의 파일에서 데이터를 다시 읽으려면 역변환을 수행해야합니다.

file=open('numbers.txt','rb')
   data=file.read()
   print (list(data))

객체를 문자열 또는 바이트 형식으로 (또는 그 반대로) 수동 변환하는 이러한 유형의 수동 변환은 매우 번거롭고 지루합니다. 파이썬 객체의 상태를 바이트 스트림 형태로 파일 또는 메모리 스트림에 직접 저장하고 원래 상태로 검색 할 수 있습니다. 이 프로세스를 직렬화 및 역 직렬화라고합니다.

Python의 내장 라이브러리에는 직렬화 및 역 직렬화 프로세스를위한 다양한 모듈이 포함되어 있습니다.

Sr. 아니. 이름 및 설명
1

pickle

Python 특정 직렬화 라이브러리

2

marshal

직렬화를 위해 내부적으로 사용되는 라이브러리

shelve

Pythonic 객체 지속성

4

dbm

Unix 데이터베이스에 대한 인터페이스를 제공하는 라이브러리

5

csv

Python 데이터를 CSV 형식으로 저장 및 검색하기위한 라이브러리

6

json

범용 JSON 형식으로 직렬화하기위한 라이브러리