직렬화(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을 변환하는 것도 있는데 나중에 크롤링, 자동화 만들 때 꼭 필요한 부분이라고 생각합니다.

 

 

이상 포스터를 마치겠습니다.

+ Recent posts