바이너리 형식 (npy 또는 npz, 바람직하게)으로 데이터를 행 단위로 저장하려고합니다. 특히, 내가 뭘하고 싶은 것입니다 :파이썬에서 행별로 파일에 바이너리 데이터 저장
- 열기/
- 데이터
- 저장 행의 행을 생성합니다 (사전으로) 파일에
- 저장 헤더 정보 바이너리 형식 파일을 생성 데이터의 ...
- 데이터
- 저장 데이터 파일 의 행의 새 행을 생성 파일로 모든 행에 대해 반복
가장 최근에 시도한 내용은 savez입니다. 이렇게하면 이전 행의 데이터를 덮어 씁니다. 나는 에 데이터를 덧붙여에 덧붙이고 싶습니다. 그러나 덮어 쓰지 않습니다. 코드에 대한 기본적인 아이디어는 다음과 같습니다 :
header = {'TIME': 20, 'POSITION': 30}
testfile = open('test.npz', 'wb')
np.savez(testfile, header)
testfile.close()
i = 0
while i < 5:
data = [i]*100 # generate row of data
testfile = open('test.npz', 'wb')
np.savez(testfile, data) #append data to current file
testfile.close()
i += 1
내가 생성하고 데이터 세트가 매우 큰, 그러므로 나는 메모리의 전체 세트를 저장하고 마지막에 저장할 수 없습니다.
내가 제안한대로 데이터 파일을 열려고하면 오류가 발생합니다. 이전에는'arrays = np.load ('test.npz')','print arrays.files'를 사용하여 저장된 배열을 출력했습니다. 이제 오류가 발생합니다 :'zipfile.BadZipfile : 중앙 디렉토리의 잘못된 매직 번호 ' – user3403779
그러나, 당신의 방법을 사용하지만 .npy 형식과 np.save()를 사용하여 작동합니다. 처음에는 저장된 하나의 배열 (헤더)이있는 것 같지만 루프를 사용하여 모든 배열에 액세스 할 수 있습니다. 예 :'fp = open ('test.npy', 'rb')','for i (range) : print np.load (fp)'. – user3403779
'numpy.save'를 사용하면 압축을 포함하는 복잡성을 다루지 않아도됩니다. – metatoaster