직렬화(Serialization) : 파이썬의 객체를 일련의 바이트들로 변환한 후 다시 파이썬 객체로 복원할 수 있는 것 즉, 바이트들로 변환
역직렬화(Deserialization) : 다시 바이트들을 파이썬 객체로 메모리 상에 복원하는 것
파이썬의 pickle모듈을 사용합니다.
소스코드는 다음과 같습니다.
import pickle # (객체, 텍스트) 직렬화, 역직렬화
#파일 이름과 데이터
bfilename = 'C:\\Users\\admin\\AppData\\Local\\Programs\\Python\\Python38-32/test.bin'
tfilename = 'C:\\Users\\admin\\AppData\\Local\\Programs\\Python\\Python38-32/test.txt'
data1 = 77
data2 = "hello, world!"
data3 = ["car", "apple","house"]
#바이너리 쓰기
with open(bfilename, 'wb') as f:
pickle.dump(data1,f) #dumps(문자열을 직렬화)
pickle.dump(data2,f) #dump 객체를 바이너리로
pickle.dump(data3,f)
#텍스트 쓰기
with open(tfilename, 'wt') as f:
f.write(str(data1))
f.write('\n')
f.write(data2)
f.write('\n')
f.writelines('\n'.join(data3))
#write는리스트를 추출할 수 없기때문에
# writelines함수를 제공한다.
#바이너리 읽기
with open(bfilename, 'rb') as f:
b = pickle.load(f) # 객체를 역직렬화
#loads 문자열을 읽어오는 것 (문자열 역질렬화)
print(type(b), ' Binary Read1 | ',b)
b = pickle.load(f)
print(type(b), ' Binary Read2 | ',b)
b = pickle.load(f)
print(type(b), ' Binary Read3 | ',b)
#텍스트 읽기
with open(tfilename, 'rt') as f:
for i, line in enumerate(f, 1):
print(type(line), 'Text Read' + str(i) + '| ', line, end='')
결과를 한 번 유추해보시길 바랍니다.
결과
pickle말고도 json을 변환하는 것도 있는데 나중에 크롤링, 자동화 만들 때 꼭 필요한 부분이라고 생각합니다.
이상 포스터를 마치겠습니다.
'파이썬' 카테고리의 다른 글
맥 파이썬 설치 및 2.7버전에서 3.x으로 변경하기 (2) | 2020.04.19 |
---|---|
파이썬 pdf파일을 text, html로 바꾸는 법 (2) | 2020.04.10 |
파이썬 - 자동으로 다음 로그인 하기 (0) | 2020.04.08 |
파이썬 - selenium, webdriver로 구글, 다음창 자동으로 스크린샷 찍기 (0) | 2020.04.08 |
파이썬 - 루리웹 로그인 처리 후 스크랩핑하기 (0) | 2020.04.03 |