2012-10-10 3 views
9

파이썬에서 파일을 메모리로 읽지 않고 찾을 수있는 zip 파일 안에 만들 수 있습니까? 파이썬에서 zip 파일 내의 파일을 메모리로 전달하지 않고

나는 명백한 절차를 시도했지만 파일이 시크하지 않기 때문에 오류가 발생합니다 : 모든 압축 파일을 그렇게 할 방법이 없습니다

In [74]: inputZipFile = zipfile.ZipFile("linear_g_LAN2A_F_3keV_1MeV_30_small.zip", 'r') 

In [76]: inputCSVFile = inputZipFile.open(inputZipFile.namelist()[0], 'r') 

In [77]: inputCSVFile 
Out[77]: <zipfile.ZipExtFile at 0x102f5fad0> 

In [78]: inputCSVFile.se 
inputCSVFile.seek  inputCSVFile.seekable 

In [78]: inputCSVFile.seek(0) 
--------------------------------------------------------------------------- 
UnsupportedOperation      Traceback (most recent call last) 
<ipython-input-78-f1f9795b3d55> in <module>() 
----> 1 inputCSVFile.seek(0) 

UnsupportedOperation: seek 

답변

8

. DEFLATE는 스트림 압축 알고리즘으로 모든 것을 압축 해제하지 않고 파일의 임의 부분을 압축 해제 할 수는 없습니다. 은 저장된 파일에 대해을 구현할 수 있지만 일부 항목은 검색 가능하고 다른 항목은 그렇지 않은 불리한 위치에 있습니다.

+0

고맙습니다. 하지만 내가 찾고있는 것으로부터, tar 파일로 가능할 수 있습니다. 맞습니까? – jbssm

+0

tar 파일의 압축이 풀린 경우에만. gzip (DEFLATE) 압축을 넣 자마자 동일한 문제가 발생합니다. –

+1

비행 중에도 gzip으로 압축 된 tar 파일을 사용할 수는 있지만 파이썬은 메모리에서 또는 tmp 디스크의 어느 곳에서나 압축을 해제하는 것으로 보이며 압축되지 않은 파일과 비교할 때 많은 시간이 걸립니다. 1 분과 4 초를 비교해 본다. 모든 도움을 주셔서 감사합니다. – jbssm