2012-10-10 16 views
9
)

, bir dosyayı Python'da belleğe okumadan Python'da aranabilir hale getirmek için bir dosya var mı? Arayın() Python'da bir zip dosyası içinde bir dosyaya aktarmadan (

ben bariz prosedürü çalıştı ancak dosya aranabilir olmadığı için bir hata alıyorum: tüm zip dosyaları için bunu yapmak için hiçbir yolu yoktur

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 

cevap

8

. DEFLATE, bir akış sıkıştırma algoritmasıdır; bu, dosyanın her hangi bir parçasını daha önce açılmadan sıkıştırmanın bir yolu olmadığı anlamına gelir. muhtemelen depolanmış dosyalar için uygulanabilir, ancak sonra bazı girişler aranabilir ve diğerleri olmayan uygun konumda olsun.

+0

Anlıyorum, teşekkürler. Ama aradığım şeyden, tar dosyaları ile mümkün değil mi? – jbssm

+0

Yalnızca tar dosyası sıkıştırılmamışsa. Gzip (DEFLATE) sıkıştırmasını attıkça, aynı problemi alırsınız. –

+1

Her ne kadar uçucu olsa da, gzip sıkıştırılmış bir tar dosyasını kullanabilir ve içine bakabilirim, Python ya bellekte veya tmp diskinde bir yerde sıkıştırılmış gibi görünüyor ve bu işlem sıkıştırılmamış bir dosyaya kıyasla çok fazla zaman alıyor. Denemekte olduğum örnekle yaklaşık 1 saniye 1dk. Tüm yardımlarınız için teşekkür ederim. – jbssm

İlgili konular