Tôi đang sử dụng mã hiện để trích xuất các tập tin từ một tập tin zip trong khi vẫn giữ cấu trúc thư mục:Extract file từ zip mà không cần giữ cho thư mục cấp cao nhất với python zipfile
zip_file = zipfile.ZipFile('archive.zip', 'r')
zip_file.extractall('/dir/to/extract/files/')
zip_file.close()
Dưới đây là một cấu trúc cho một tập tin ví dụ zip:
/dir1/file.jpg
/dir1/file1.jpg
/dir1/file2.jpg
cuối cùng tôi muốn điều này:
/dir/to/extract/file.jpg
/dir/to/extract/file1.jpg
/dir/to/extract/file2.jpg
Nhưng nó nên tôi gnore chỉ khi file zip có một thư mục cấp cao nhất với tất cả các file bên trong nó, vì vậy khi tôi trích xuất một zip với cấu trúc này:
/dir1/file.jpg
/dir1/file1.jpg
/dir1/file2.jpg
/dir2/file.txt
/file.mp3
Nó nên ở lại như thế này:
/dir/to/extract/dir1/file.jpg
/dir/to/extract/dir1/file1.jpg
/dir/to/extract/dir1/file2.jpg
/dir/to/extract/dir2/file.txt
/dir/to/extract/file.mp3
Bất kỳ ý tưởng ?
Bạn có thể thêm một số ý kiến để hiểu rõ hơn về những gì đang xảy ra ở đây, xin vui lòng? – aturegano
@aturegano. Tôi đã thêm một số nhận xét vào mã ví dụ. Các tên tệp của các đối tượng zipinfo có thể ghi được. Vì vậy, kịch bản sẽ rút tiền tố chung từ tất cả các tệp trong kho lưu trữ, trước khi giải nén chúng vào thư mục đích. – ekhumoro