2012-05-12 18 views
32

Dosyayı tamamen ayıklamadan python kullanarak gz sıkıştırılmış metin dosyasından bir satırı okumak kolay mı? Ben 200m olan bir text.gz dosyası var. Ayıkladığımda, 7.4gb olur. Ve bu okumak zorunda olduğum tek dosya değil. Toplam işlem için 10 dosya okumalıyım. Bu sıralı bir iş olmasına rağmen, bence tüm bilgiyi harcamadan yapmanın akıllıca bir şey olacağını düşünüyorum. Bunun mümkün olduğunu bile bilmiyorum. Python kullanarak nasıl yapılabilir? Bir metin dosyasını satır-satır okumalıyım.python: sıkıştırılmış metin dosyalarından satırları oku

cevap

38

Standart gzip modülünü python'da kullanabilirsiniz. Sadece başka bir dosya olarak açmak ve satırlarını okumak için

kullanın.

burada

fazla bilgi: Python gzip module

+0

Bu, tüm dosyayı belleğe yüklüyor mu? Ya da gerektiğinde satırları yüklemek için yeterince zeki mi? –

+1

@Sachin_ruk bu dosyayı açmıyor sadece dosyayı açıyor. Verileri bir dosyadan okumak için '' 'f.readline()' 'yapmak zorundasınız. Ya da '' f.readlines (N) '' '' N'' okumak istediğiniz satır sayısıdır. – Tom

22

gzip.GzipFile kullanma:

import gzip 

with gzip.open('input.gz','r') as f: 
    for line in f: 
     print('got line', line) 

Not: python3 için size gelmiş dosyayı belirtmek için ikili okumaya 'r' varsayılan olarak, 'rt' açılan veya edilecek aksi halde line.decode(...) kullanın.

Not : gzip.open(filename, mode)gzip.GzipFile(filename, mode) için bir takma addır. Sıkıştırılmamış dosyaları açmak için kullanılan with open(...) as f:'a benzeyen eskiyi tercih ederim.

+18

python3 için 'rt' olarak açılacak dosyayı 'r' varsayılan olarak ikili okumaya ayarlamak zorundasınız. – kap

+1

veya 'line.decode()' işlevini kullanın – dmeu

İlgili konular