2015-09-26 15 views
5

Jak mogę przeczytać i zapisać zawartość 7z. Używam Python 2.7.9, można wyodrębnić lub Archive tak, ale nie mogę odczytać zawartość w Pythonie, ja tylko wymieniając zawartości pliku w CMDJak odczytać zawartość pliku 7z za pomocą pytona

import subprocess 
import os 

source = 'filename.7z' 
directory = 'C:\Directory' 
pw = '123456' 
subprocess.call(r'"C:\Program Files (x86)\7-Zip\7z.exe" x '+source +' -o'+directory+' -p'+pw) 
+0

możliwy duplikat [Python - jak kompresować z 7zip zamiast zip, zmiana kodu] (http://stackoverflow.com/questions/11466572/python-how-to-compress-w-7zip-instead-of- zip-code-changing) –

Odpowiedz

2

ostrzał i nazywając 7z rozpakuje pliki, a następnie możesz uzyskać dostęp do tych plików przy użyciu standardowych wywołań dostępu do plików (nie wiem Python - ale musi mieć możliwość dostępu do plików!).

Jeśli chcesz zajrzeć do archiwum 7z bezpośrednio w Pythonie, musisz skorzystać z biblioteki. Oto jeden: https://pypi.python.org/pypi/libarchive - Nie mogę ręczyć za to, co powiedziałem - nie jestem użytkownikiem Pythona - ale korzystanie z biblioteki stron trzecich jest zwykle dość łatwe we wszystkich językach.

Ogólnie rzecz biorąc, obsługa 7z wydaje się ograniczona. Jeśli możesz użyć alternatywnych formatów (zip/gzip), to uważam, że zakres bibliotek Pythona (i przykładowy kod) jest bardziej wszechstronny.

Nadzieję, że pomaga.

+0

Dziękuję, spróbuję użyć libarchive –

7

Można użyć albo libarchive lub pylzma. Jeśli możesz zaktualizować do wersji python3.3 +, możesz użyć lzma, która znajduje się w standardowej bibliotece.

+2

Zawsze używam python 2.7.9, nie wiem 3.3 + ma standardową bibliotekę dla 7z, więc dziękuję bardzo –

+15

Pamiętaj, że lzma nie działa z archiwum 7z *, tylko pojedyncze pliki. – bfontaine

+0

Więc lzma nie jest odpowiednią biblioteką i po prostu zmarnowałem czas, aby to zadziałało. Downvote. – shinzou