2015-09-26 30 views
5

Làm cách nào để đọc và lưu nội dung của 7z. Tôi sử dụng Python 2.7.9, tôi có thể trích xuất hoặc Archive như thế này, nhưng tôi không thể đọc được nội dung trong python, tôi chỉ liệt kê nội dung của tập tin trong CMDCách đọc nội dung của tệp 7z bằng python

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

bản sao có thể có của [Python - cách nén bằng 7zip thay vì mã zip, thay đổi mã] (http://stackoverflow.com/questions/11466572/python-how-to-compress-with-7zip-instead-of- zip-code-changing) –

Trả lời

2

bắn phá ra và gọi 7z sẽ trích xuất các tập tin và sau đó bạn có thể truy cập các tệp đó bằng cách sử dụng các cuộc gọi File Access chuẩn (Tôi không biết Python - nhưng nó phải có khả năng truy cập các tệp!).

Nếu bạn muốn xem bên trong kho lưu trữ 7z trực tiếp trong Python, thì bạn sẽ cần sử dụng thư viện. Đây là một: https://pypi.python.org/pypi/libarchive - Tôi không thể xác minh cho nó như tôi đã nói - Tôi không phải là người dùng Python - nhưng việc sử dụng thư viện của bên thứ ba thường khá dễ dàng trong tất cả các ngôn ngữ.

Nói chung, Hỗ trợ 7z dường như bị giới hạn. Nếu bạn có thể sử dụng các định dạng thay thế (zip/gzip) thì tôi nghĩ bạn sẽ thấy phạm vi của các thư viện Python (và mã ví dụ) là toàn diện hơn.

Hy vọng điều đó sẽ hữu ích.

+0

Cảm ơn bạn, tôi sẽ thử sử dụng libarchive –

7

Bạn có thể sử dụng libarchive hoặc pylzma. Nếu bạn có thể nâng cấp lên python3.3 +, bạn có thể sử dụng lzma, trong thư viện chuẩn.

+2

Tôi luôn sử dụng python 2.7.9, tôi không biết 3.3+ có thư viện chuẩn cho 7z, vì vậy cảm ơn bạn rất nhiều –

+15

Lưu ý rằng lzma không hoạt động với 7z * lưu trữ *, chỉ các tệp duy nhất. – bfontaine

+0

Vì vậy, lzma không phải là thư viện phù hợp và tôi chỉ lãng phí thời gian để làm cho nó hoạt động. Downvote. – shinzou

Các vấn đề liên quan