2013-04-23 1 views
-1

피클을 시도했지만 디스크의 크기가 매우 큽니다. 나는 모든 프로토콜을 시도했다. 디스크의 출력 파일 크기가 메모리 크기보다 큽니다.파이썬에서 모듈을 메모리와 동일한 디스크 크기로 사용할 수있는 모듈이 있습니까?

#Here, a is a string. 
def picklate(a): 
    picklist.append(a) 
    pickle.dump(a,picklefile,2) 
+0

당신은 무엇을 산란합니까? 더 많은 코드를 입력하십시오. 필자는 바이너리 파일에 데이터를 덤핑하는 것이 아니라 일부 직렬화 프로토콜을 사용하는 경우에는 가능하지 않다고 생각합니다. 그래도 틀릴 수도 있습니다. – msvalkon

+0

문자열입니다. 나는 그 질문에서 언급했다. – user1471283

+0

크기는 어떻게 결정 했습니까? –

답변

0

편집 : 나는 다음과 같은 코드를 사용하고 정말 실제로 저장 어떤 피클에주의를 지불하지 않고이 답변을 작성하는 데, 그것은 문자열, 피클 파일의 측면에서 실제로 거의 동일 numpy가 있음 명백 크기. 즉, 이진 데이터 배열을 저장하는 일반적인 경우에 numpy.save이 좋으므로이 대답을 여기 남겨 두겠습니다.

numpy.save 동일한 크기를 유지하는 데는 매우 효과가 있습니다.

import string, random, numpy 
mystring = ''.join(random.choice(string.lowercase) for i in range(1000000)) 
numpy.save('my_file', mystring) 

당신은 충분히 쉽게 다시 얻을 수 있습니다 :

mystring = str(numpy.load('my_file.npy')) 

그 사용량이 약간 다릅니다 비록 당신이 (더 작은 파일을 원하는 경우도 numpy.savez_compressed을 사용할 수 있습니다 - numpy.savez처럼, 그것은을 위해 설계 하나 이상의 배열 저장).

관련 문제