ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [python] pickle
    python 2025. 5. 27. 13:30

    pickle

    pickle은 파이썬 객체를 파일로 저장하거나 다시 불러올 수 있게 해주는 모듈입니다.

    즉, 파이썬 객체를 직렬화(serialize)하거나 역직렬화(deserialize) 하는 데 사용됩니다.

     

    🧠 쉽게 말하면?

    • 직렬화 (Serialization):
      파이썬 객체(예: 리스트, 딕셔너리, 클래스 인스턴스 등)를 파일에 저장하거나 네트워크 전송할 수 있는 형태로 변환하는 것.
    • 역직렬화 (Deserialization):
      저장된 데이터를 다시 원래의 파이썬 객체로 복원하는 것.

     

    📦 pickle 주요 함수

    pickle.dump(obj, file) 객체를 직렬화하여 파일에 저장
    pickle.load(file) 파일에서 객체를 역직렬화하여 로드
    pickle.dumps(obj) 객체를 바이트 데이터로 직렬화 (파일 저장 없이)
    pickle.loads(bytes) 바이트 데이터를 객체로 역직렬화

     

    ✅ 예제

    객체를 파일로 저장

    import pickle
    
    data = {"name": "Alice", "age": 25, "hobby": ["reading", "coding"]}
    
    with open("data.pickle", "wb") as f:
        pickle.dump(data, f)

     

    파일에서 객체 불러오기

    import pickle
    
    with open("data.pickle", "rb") as f:
        loaded_data = pickle.load(f)
    
    print(loaded_data)
    # {'name': 'Alice', 'age': 25, 'hobby': ['reading', 'coding']}

     

    💡 pickle vs json

    형식 바이너리 텍스트
    저장 대상 거의 모든 파이썬 객체 문자열, 숫자, 리스트, 딕셔너리
    호환성 파이썬 전용 다양한 언어에서 사용 가능
    사용 예 파이썬 내부 데이터 저장 웹 API, 설정 파일

     

    ⚠️ 주의: 보안 이슈

    pickle.load()는 신뢰할 수 없는 소스의 파일을 절대 읽으면 안 됩니다. 악성 코드가 포함될 수 있습니다.

     

     

    실습

     

    # 직렬화

    import pickle
    profile_file = open("profile.pickle", "wb")
    profile = {"이름":"박명수", "나이":30, "취미":["축구", "골프", "코딩"]}
    print(profile)
    
    pickle.dump(profile, profile_file) # profile에 있는 정보를 file에 저장
    profile_file.close()

     

    {'이름': '박명수', '나이': 30, '취미': ['축구', '골프', '코딩']}

     

     

    해당 파일에도 저장되었다.

     

    # 역직렬화

    import pickle
    profile_file = open("profile.pickle", "rb")
    profile = pickle.load(profile_file) # file에 있는 정보를 profile에 불러오기
    print(profile)
    profile_file.close()

     

    {'이름': '박명수', '나이': 30, '취미': ['축구', '골프', '코딩']}

    'python' 카테고리의 다른 글

    [python] 클래스  (0) 2025.05.28
    [python] with  (1) 2025.05.27
    [python] 파일 입출력  (0) 2025.05.27
    [python] 표준 입출력  (0) 2025.05.27
    [python] 지역변수와 전역변수  (0) 2025.05.26
Designed by Tistory.