Saya membaca zipfiledokumentasi , tetapi tidak bisa mengerti cara unzip file, hanya bagaimana cara zip file. Bagaimana cara unzip semua isi file zip ke direktori yang sama?
bagaimana jika isi arsip .zip sama, di semua arsip .zip? cara mengganti nama konten sebelum mengekstraksi? contoh: 1.zip 2.zip .. semua mengandung content.txt: ekstrak semua seperti 1content.txt 2content.txt?
iratzhash
8
@iratzhash Saya biasanya membuat direktori sementara baru untuk konten menggunakan tempfile: docs.python.org/3/library/tempfile.html Saya unzip ke direktori sementara dan memindahkan / mengatur file dari sana.
Dave Forgac
8
@ 3kstc saya akan from zipfile import ZipFile. Saat menggunakannya, Anda tidak perlu lagi menggunakan zipfile.ZipFile, dan bisa menggunakannya ZipFile(zip_file_name).
Debug255
@iratzhash Saya menyadari Anda berkomentar 1,5 tahun yang lalu. Tapi supaya orang lain tahu, biasanya isi dalam file zip adalah read-only. Jawaban yang bagus ada di sini oleh "bouke"
Debug255
Semacam catatan meta, tetapi hasil edit dari November 2018 membuat ini cukup identik dengan jawaban lain yang sudah menggunakan manajer konteks (dan tautan ke apa artinya itu).
Engineero
304
Jika Anda menggunakan Python 3.2 atau yang lebih baru:
import zipfile
with zipfile.ZipFile("file.zip","r")as zip_ref:
zip_ref.extractall("targetdir")
Anda tidak perlu menggunakan tutup atau mencoba / menangkap dengan ini karena menggunakan
konstruksi manajer konteks .
Terima kasih atas perhatian Anda @MylesHollowed Namun, ini bukan salinan dari jawaban yang diterima. Saya setuju bahwa mereka mirip satu sama lain, tetapi mereka berbeda. Ini juga ditunjukkan oleh komentar Anda, karena yang diterima jelas lebih baik untuk Anda daripada saya. Jika itu adalah salinan, itu akan sama ... Untuk seseorang, jawaban saya mungkin berharga karena mungkin lebih mudah dibaca dan ketika Anda perhatikan mengimpor lebih sedikit kode ... Karena perbedaan-perbedaan inilah saya memutuskan untuk memberikan jawaban saya untuk memberikan alternatif. Bukankah itu sebabnya kita bisa memberikan jawaban lain setelah menerimanya? Semua yang terbaik
simhumileco
Apa yang salah dengan jawaban ini? Mengapa seseorang memberinya poin negatif? Bagaimanapun, itu adalah jawaban untuk pertanyaan dan dibedakan oleh kesederhanaannya dibandingkan dengan jawaban lain, yang mungkin penting bagi beberapa orang yang mencari jawaban. Bukan?
simhumileco
1
@MylesHollowed import zipfile.ZipFilemenghasilkan ModuleNotFoundError: No module named 'zipfile.ZipFile'; 'zipfile' is not a packagedalam 3.6.5. Saya terbuka untuk itu karena kesalahan operator pada bagian saya, tetapi saya tidak tahu apa itu.
MikeF
6
coba ini :
import zipfile
def un_zipFiles(path):
files=os.listdir(path)for file in files:if file.endswith('.zip'):
filePath=path+'/'+file
zip_file = zipfile.ZipFile(filePath)for names in zip_file.namelist():
zip_file.extract(names,path)
zip_file.close()
import os
zip_file_path ="C:\AA\BB"
file_list = os.listdir(path)
abs_path =[]for a in file_list:
x = zip_file_path+'\\'+a
print x
abs_path.append(x)for f in abs_path:
zip=zipfile.ZipFile(f)
zip.extractall(zip_file_path)
Ini tidak mengandung validasi untuk file jika itu bukan zip. Jika folder tersebut berisi file bukan .zip, folder itu akan gagal.
Jawaban:
Cukup banyak!
sumber
from zipfile import ZipFile
. Saat menggunakannya, Anda tidak perlu lagi menggunakanzipfile.ZipFile
, dan bisa menggunakannyaZipFile(zip_file_name)
.Jika Anda menggunakan Python 3.2 atau yang lebih baru:
Anda tidak perlu menggunakan tutup atau mencoba / menangkap dengan ini karena menggunakan konstruksi manajer konteks .
sumber
zipfile
+pathlib
= menang. keberatan jika saya sedikit memperbarui jawaban Anda?Gunakan
extractall
metode ini, jika Anda menggunakan Python 2.6+sumber
Anda juga hanya dapat mengimpor
ZipFile
:Bekerja di Python 2 dan Python 3 .
sumber
import zipfile.ZipFile
menghasilkanModuleNotFoundError: No module named 'zipfile.ZipFile'; 'zipfile' is not a package
dalam 3.6.5. Saya terbuka untuk itu karena kesalahan operator pada bagian saya, tetapi saya tidak tahu apa itu.coba ini :
path: path file unzip
sumber
Ini tidak mengandung validasi untuk file jika itu bukan zip. Jika folder tersebut berisi file bukan .zip, folder itu akan gagal.
sumber