Jeśli mam plik .tar z plikiem '/path/to/file.txt'
, czy istnieje sposób (w języku Python), aby wyodrębnić plik do określonego katalogu bez odtwarzania katalogu '/path/to'
?Python: Wyodrębnianie za pomocą tarfile, ale ignorowanie katalogów
Odpowiedz
Można użyć TarFile.extractfile(member), aby wyodrębnić określony plik.
Zwraca obiekt typu filelike (typowy język Python), którego można następnie użyć do zapisania zawartości do pliku w dowolnym miejscu.
Zgodnie z modułem tarfile możesz to łatwo zrobić. Nie sprawdziłem jeszcze.
TarFile.extract(member, path="")
Dokumentacja:
Extract członu z archiwum do bieżącego katalogu roboczego, wykorzystując jego imię i nazwisko. Informacje o plikach są wyodrębniane tak dokładnie, jak to możliwe. członkiem może być nazwa pliku lub obiekt TarInfo. Możesz podać inny katalog za pomocą ścieżki.
więc powinieneś być w stanie zrobić
TarFile.extract(member, path=".")
Zobacz pełną dokumentację w: http://docs.python.org/library/tarfile.html
Gdy dokumenty mówią "do bieżącego katalogu roboczego, używając jego pełnej nazwy", "pełne imię i nazwisko" jest w rzeczywistości ścieżką. Mogą dokładniej powiedzieć "używając pełnej ścieżki, zaczynając od bieżącego katalogu roboczego ... Możesz podać inny katalog początkowy, używając ścieżki." Ta odpowiedź nie zadziała. Odpowiedź ekhumoro wydaje się lepsza. – Weeble
Atrybuty danych o TarInfo
obiektu są zapisu. Tak po prostu zmienić name
aby cokolwiek chcecie, a następnie rozpakuj go:
import sys, os, tarfile
args = sys.argv[1:]
tar = tarfile.open(args[0])
member = tar.getmember(args[1])
member.name = os.path.basename(member.name)
path = args[2] if len(args) > 2 else ''
tar.extract(member, path)
+1 za przypomnienie o 'os.path.basename()' – metasequoia
spotkam tego problemu, jak również i wymienić kompletny przykład na podstawie odpowiedzi ekhumoro za
import os, tarfile
output_dir = "."
tar = tarfile.open(tar_file)
for member in tar.getmembers():
if member.isreg(): # skip if the TarInfo is not files
member.name = os.path.basename(member.name) # remove the path by reset it
tar.extract(member,output_dir) # extract
- 1. Wyodrębnianie funkcji za pomocą Javascriptu
- 2. Wyodrębnianie danych z plików HTML za pomocą BeautifulSoup i Python
- 3. Wyodrębnianie tekstu z pliku PDF za pomocą PDFMiner w python?
- 4. Wyodrębnianie danych za pomocą wyrażeń regularnych w języku Python
- 5. Wyodrębnianie hierarchii katalogów przy użyciu języka go
- 6. Wyodrębnianie wartości atrybutu za pomocą beautifulsoup
- 7. Wyodrębnianie danych numerycznych Python
- 8. wyodrębnianie wartości z pliku za pomocą ant
- 9. Wyodrębnianie tabeli symboli za pomocą języka
- 10. Wyodrębnianie pliku ISO za pomocą Javy
- 11. Serwuj wiele katalogów za pomocą Apache
- 12. Pobieranie drzewa katalogów za pomocą ftplib
- 13. Wyodrębnianie wiadomości gettext JavaScript za pomocą ekstraktora Babel CLI
- 14. Wyodrębnianie informacji z krotki (Python)
- 15. MySQL łączenie pól, ale ignorowanie pustych
- 16. Mercurial `hg clone` ale ignorowanie wszystkich subrepos?
- 17. Wyodrębnianie adresów IP z ciągów znaków za pomocą wyrażeń regularnych
- 18. Wyodrębnianie podłańcuchów za pomocą wyrażeń regularnych w zwykłym bashu
- 19. Wyodrębnianie konkretnych danych ze strony WWW za pomocą PHP
- 20. Wyodrębnianie określonego słowa za pomocą gsub i regex
- 21. Wyodrębnianie wybranych kolumn z tabeli za pomocą BeautifulSoup
- 22. hgignore: pomoc ignorowanie wszystkich plików, ale niektóre z nich
- 23. svg diagramy za pomocą python
- 24. Wyodrębnianie danych Java za pomocą wyrażeń regularnych między znacznikami href
- 25. Wyodrębnianie obiektu ViewState podczas testowania JSF za pomocą JMeter
- 26. Wyodrębnianie obrazu z wideo w danym czasie za pomocą OpenCV
- 27. Wyodrębnianie element XML z pliku XML za pomocą XPath
- 28. Wyodrębnianie informacji certyfikatu PEM programowo za pomocą openssl
- 29. Wyodrębnianie dwucyfrowych miesięcy i dni z daty w języku Python
- 30. dodać pusty katalog do pliku tarfile
To będzie działać, ale to nie robi Zachowaj metadane pliku (czas modyfikacji itp.). –