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

達(dá)令說
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
從文檔中:
ZipFile.write(文件名,arcname =無,compress_type =無,compresslevel =無)
將名為filename的文件寫入存檔,并為其指定存檔名稱arcname(默認(rèn)情況下,這與 filename 相同,但沒有驅(qū)動器號,并且刪除了前導(dǎo)路徑分隔符)。
因此,只需指定一個(gè)顯式的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貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
也許我誤解了這個(gè)問題,但有人可以向我解釋為什么答案不是:
zip.write(file, arcname=os.path.basename(file))
它對我有用,但同樣,我可能在問題中遺漏了一些東西......
添加回答
舉報(bào)
0/150
提交
取消