programing

피클 파일을 읽는 방법?

lastcode 2023. 6. 11. 10:43
반응형

피클 파일을 읽는 방법?

몇 가지 데이터를 생성하여 다음과 같이 여러 번 저장했습니다.

with open('filename', 'a') as f:
        pickle.dump(data, f)

파일 크기가 증가할 때마다 파일을 열 때마다

with open('filename', 'rb') as f:
    x = pickle.load(f)

저는 지난번 데이터만 볼 수 있습니다.파일을 올바르게 읽는 방법은 무엇입니까?

피클은 한 번에 단일 개체를 직렬화하고 단일 개체를 다시 읽습니다. 피클된 데이터는 파일에 순서대로 기록됩니다.

당신이 단순히 한다면,pickle.load파일에 직렬화된 첫 번째 개체를 읽어야 합니다(작성한 마지막 개체가 아님).

첫 번째 개체의 직렬화를 해제한 후 파일 포인터는 다음 개체의 시작 부분에 있습니다(단순히 호출할 경우).pickle.load다시, 다음 개체를 읽을 것입니다. 파일이 끝날 때까지 그렇게 하십시오.

objects = []
with (open("myfile", "rb")) as openfile:
    while True:
        try:
            objects.append(pickle.load(openfile))
        except EOFError:
            break

판다 0.22+의 일부로 read_pickle 기능이 있습니다.

import pandas as pd

obj = pd.read_pickle(r'filepath')

다음은 피클 파일을 쓰고 읽는 방법의 예입니다.파일에 피클 데이터를 계속 추가하는 경우 원하는 것을 찾을 때까지 파일을 계속 읽거나 파일 끝에 도달하여 예외가 생성됩니다.그것이 마지막 기능이 하는 것입니다.

import os
import pickle


PICKLE_FILE = 'pickle.dat'


def main():
    # append data to the pickle file
    add_to_pickle(PICKLE_FILE, 123)
    add_to_pickle(PICKLE_FILE, 'Hello')
    add_to_pickle(PICKLE_FILE, None)
    add_to_pickle(PICKLE_FILE, b'World')
    add_to_pickle(PICKLE_FILE, 456.789)
    # load & show all stored objects
    for item in read_from_pickle(PICKLE_FILE):
        print(repr(item))
    os.remove(PICKLE_FILE)


def add_to_pickle(path, item):
    with open(path, 'ab') as file:
        pickle.dump(item, file, pickle.HIGHEST_PROTOCOL)


def read_from_pickle(path):
    with open(path, 'rb') as file:
        try:
            while True:
                yield pickle.load(file)
        except EOFError:
            pass


if __name__ == '__main__':
    main()

브라우저에서 파일을 직접 여는(대부분) 소프트웨어 도구를 개발했습니다(전송되는 것이 없으므로 100% 비공개).

https://pickleviewer.com/ (이전)

이제 여기서 호스팅됩니다. https://fire-6dcaa-273213.web.app/

편집: https://github.com/ch-hristov/Pickle-viewer 에서 호스팅하려면 여기에서 사용할 수 있습니다.

편하게 진행해주세요.

언급URL : https://stackoverflow.com/questions/35067957/how-to-read-pickle-file

반응형