ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [pickle] 파이썬에서 객체 내보내기, 직렬화 알아보기
    Python/파이썬 기초 2024. 7. 5. 10:24
    반응형

    Pickle을 이용한 객체 내보내기


    파이썬(Python)에는 피클(pickle)이라고 하는 모듈이 있습니다. 이 모듈은 파이썬에서 선언한 객체를 파일로 내보내거나 불러오는데 쓰이지요. 간단히 말해서, 메모리에 있는 정보를 그대로 저장장치에 쓰고 읽을 수 있도록 도와줍니다. 이 개념을 간단하게 정리하자면, 아래와 같습니다.

     

    • 직렬화(serialization) = 피클링(pickling): 객체가 바이트 스트림으로 변환되는 절차입니다. 이렇게 변환된 바이트 스트림 데이터는 그대로 파일로 내보낼 수 있지요.
    • 역직렬화(deserialization) = 언피클링(unpickling): 피클링의 반대 연산입니다.

     

    피클링을 활용할 경우, 데이터의 형태에 상관없이 파이썬에서 호환되는 피클 파일(주로 pkl 확장자를 이용합니다)로 내보낼 수 있습니다. 하지만, 단순 데이터가 아니라 함수 등의 기능까지도 내보낼 수 있는 특성상 타인이 만든 피클 파일은 함부로 불러오지 않는 것이 보안상 좋겠지요. 파이썬 공식 문서에서는 신뢰할 수 없는 데이터의 경우, json 파일을 이용하는 것을 권장하고 있습니다.

     

     

    pickle 모듈 이용하기


    지금부터 pickle 모듈을 이용해서 데이터를 읽고 쓰는 법을 알아보겠습니다. pickle은 파이썬 내장 모듈이기 때문에 별도 설치는 필요 없고, 코드를 따라 써 보시면 되겠습니다. 예를 들어, 'hello!' 라는 문자열을 파일로 쓰고 읽는 과정을 구현하자면 아래와 같이 표현할 수 있지요.

     

     

    
    import pickle
    
    
    string1 = 'hello!'
    
    
    # save
    
    with open('hello.pkl', 'wb') as f:
    
        pickle.dump(string1, f)
    
    
    # load
    
    with open('hello.pkl', 'rb') as f:
    
        print(pickle.load(f))
    
    hello!

     

     

    여기서는 문자열을 읽고 쓰는 과정을 보여드렸지만, 다른 자료형도 파일로 읽고 쓸 수 있기 때문에 피클의 활용도는 높은 편입니다. 매번 선언하는 함수나 클래스를 저장해 두거나, 마땅히 저장할 만한 파일 형식이 없는 데이터의 경우 그냥 피클 파일을 이용하면 간편하게 관리할 수 있지요.

     

     

    그런데, 여기서 주의할 점이 하나 있습니다. 피클 파일은 파이썬에서만 사용할 수 있기 때문에, 다른 프로그램이나 프로그래밍 언어에서도 사용할 파일이라면 이 방법으로 데이터를 저장하는건 권장드리지 않습니다.

    반응형

    댓글

문의: jwkang3929@naver.com