Czy można łatwo odczytać linię ze skompresowanego pliku gz za pomocą Pythona bez całkowitego wyodrębnienia pliku? Mam plik text.gz, który jest aroud 200mb. Po wyodrębnieniu staje się 7,4 gb. I nie jest to jedyny plik, który muszę przeczytać. Dla całego procesu muszę przeczytać 10 plików. Chociaż będzie to praca sekwencyjna, myślę, że będzie to mądrą rzeczą bez pozbawiania całej informacji. Nie wiem nawet, czy to możliwe. Jak to zrobić za pomocą Pythona? Muszę czytać plik tekstowy wiersz po wierszu.python: odczytuje linie ze skompresowanych plików tekstowych
32
A
Odpowiedz
12
Czy próbowałeś używać gzip.GzipFile? Argumenty są podobne do open
.
38
Można użyć standardowego modułu gzip w python. Po prostu użyj:
gzip.open('myfile.gz')
, aby otworzyć plik jak każdy inny plik i przeczytać jego wiersze.
Więcej informacji tutaj: Python gzip module
22
Korzystanie gzip.GzipFile:
import gzip
with gzip.open('input.gz','r') as f:
for line in f:
print('got line', line)
Uwaga : dla python3 należy określić plik zostać otwarty w 'rt'
, jak 'r'
domyślnych do odczytu binarnego, lub w przeciwnym razie użyj line.decode(...)
.
Uwaga : gzip.open(filename, mode)
to pseudonim dla gzip.GzipFile(filename, mode)
. Wolę ten pierwszy, ponieważ wygląda podobnie do with open(...) as f:
używany do otwierania nieskompresowanych plików.
Powiązane problemy
- 1. Jak przeplatać linie z dwóch plików tekstowych
- 2. Python: czytanie skomplikowanych plików tekstowych z numpy
- 3. SharpSVN odczytuje WSZYSTKIE nazwy plików
- 4. Porównywanie dwóch plików tekstowych w pythonie
- 5. python regex zastąpić wszystkie okna nowe linie ze spacjami
- 6. odczytywania plików tekstowych z wykorzystaniem read.table
- 7. Skuteczne odczytywanie dużych plików tekstowych
- 8. Python nie odczytuje całego pliku tekstowego
- 9. Czy PostgreSQL COPY odczytuje CSV ze zdalnej lokalizacji?
- 10. Python openCV wykryj linie równoległe
- 11. Renderowanie diagramów UML z plików tekstowych
- 12. łączenie wielu plików tekstowych i usuwanie duplikatów.
- 13. Proste narzędzie do wyszukiwania plików tekstowych?
- 14. Obiekty zorientowane obiektowo na parsowanie plików tekstowych?
- 15. Jak "wymagać" plików tekstowych za pomocą przeglądarki?
- 16. Gdzie mogę znaleźć ogromną ilość plików tekstowych?
- 17. Usuwanie niedrukowalnych znaków "gremlin" z plików tekstowych
- 18. Parsowanie dużych plików tekstowych, zmodyfikowanych w locie
- 19. Python: pomiń komentarz linie oznaczone # w csv.DictReader
- 20. Ruby usuń puste linie ze stringów
- 21. tylko linie łączenia ze spacjami w Pythonie
- 22. linie rozdzielające z "z INFILE w python
- 23. Python xml ElementTree ze źródła ciągu?
- 24. Czytaj dwie linie tekstu po linii jednocześnie -python
- 25. Python nie odczytuje poprawnych wartości z wyjścia szeregowego arduino
- 26. Python - proste linie odczytu z rury
- 27. Javascript odczytuje "%%" jako "%" i "%%"?
- 28. WebRequest GetResponseStream odczytuje bajty
- 29. R - przechwytywanie elementy R wyjście do plików tekstowych
- 30. Używanie dużych plików tekstowych w JavaFX (alternatywy TextArea?)
z ciekawości to ładuje cały plik do pamięci? Czy jest wystarczająco inteligentny, aby ładować linie w razie potrzeby? –
@Sachin_ruk nie wczytuje pliku, który właśnie otwiera. Aby faktycznie załadować dane z pliku, musisz wykonać '' 'f.readline()' ', aby odczytywać linię na raz. Lub '' f.readlines (N) '' gdzie '' N'' to liczba linii, które chcesz przeczytać. – Tom