我想用 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)。有沒(méi)有辦法只壓縮文件而不壓縮文件夾?
2 回答

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