我想用 python 在磁盤上的某個位置創建一些文件的 zip 文件。我成功獲取了文件夾的路徑和每個文件名,所以我這樣做了:with zp(os.path.join(self.savePath, self.selectedIndex + ".zip"), "w") as zip: for file in filesToZip: zip.write(self.folderPath + file)一切正常,但輸出的 zip 文件包含通向文件的整個文件夾結構。有沒有辦法只壓縮文件而不壓縮文件夾?
2 回答

達令說
TA貢獻1821條經驗 獲得超6個贊
從文檔中:
ZipFile.write(文件名,arcname =無,compress_type =無,compresslevel =無)
將名為filename的文件寫入存檔,并為其指定存檔名稱arcname(默認情況下,這與 filename 相同,但沒有驅動器號,并且刪除了前導路徑分隔符)。
因此,只需指定一個顯式的arcname
:
with?zp(os.path.join(self.savePath,?self.selectedIndex?+?".zip"),?"w")?as?zip: ????????????????for?file?in?filesToZip: ????????????????????????????????????zip.write(self.folderPath?+?file,?arcname=file)

UYOU
TA貢獻1878條經驗 獲得超4個贊
也許我誤解了這個問題,但有人可以向我解釋為什么答案不是:
zip.write(file, arcname=os.path.basename(file))
它對我有用,但同樣,我可能在問題中遺漏了一些東西......
添加回答
舉報
0/150
提交
取消