Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2007-10-23 16:08:14

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

[python] - czytanie pliku gzip

Mam taki problem:
otwieram sobie plik:


>>> import gzip
>>> b = gzip.open('error.log.13.gz')
>>> b.seek(-2,2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: seek() takes exactly 2 arguments (3 given)

Czy przy pliku typu 'gzip' można sobie jakoś ustawić pozycję w pliku względem końca?
Przy normalnym pliku wszystko działa.


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#2  2007-10-23 23:12:14

  ixos - Użytkownik

ixos
Użytkownik
Zarejestrowany: 2007-10-14

Re: [python] - czytanie pliku gzip

Może tak: b.fileobj.seek(-2, 2)
Pozdrawiam

Offline

 

#3  2007-10-23 23:40:11

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: [python] - czytanie pliku gzip

Dzięki. W sumie działa, ale dane dostępne są w postaci skompresowanej, dla mnie nie przydatnej.


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#4  2007-10-24 09:02:06

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Offline

 

#5  2007-10-24 09:26:02

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: [python] - czytanie pliku gzip

Mój problem jest trochę inny. Napisałem sobie funkcję ale ze zgiezipowanym plikiem to nie przechodzi.

Kod:

def read_file_last_line(file_object):#{{{
    """Return last line from a text file.

       Gets file object as parametr"""
    i = -1
    while file_object.read(1) != 'n':
        i = i - 1
        file_object.seek(i,2)
    line = file_object.readline() 
    return line #}}}

Dokumentacja niestety jest trochę nieścisła.
Jedyna sensowna rzecz jaka mi przychodzi do głowy to przelecenie całego pliku do ostatniej linii albo zrobienie operacji na tymczasowo rozpakowanym pliku. Pytanie co z punktu widzenia zużycia zasobów jest korzystniejsze? A może jakieś inne pomysły?


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#6  2007-10-24 13:56:05

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: [python] - czytanie pliku gzip

Masz tu fajne przykłady:

http://pleac.sourceforge.net/pleac_python/filecontents.html
- w tym zbiorku coś jest o czytaniu linii z pliku, jak zczytać łatwo ostatnią

http://pleac.sourceforge.net/pleac_python/fileaccess.html
- tutaj cos o tworzeniu plików tymczasowych widze, bo nie wyobrażam sobie przeczytania pliku bez rozpakowania, może by tak stworzyć plik tymczasowy, ewentualnie rozpakowac do stringa i poszukać ostatniego znaku nowej linii albo coś

Offline

 

#7  2007-10-24 15:59:16

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: [python] - czytanie pliku gzip

Rozwiązałem to przez rozpakowanie pliku do pliku tymczasowego. Dzięki za uwagi.


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)