0
我有一個用下面的代碼拉鍊目錄的腳本:郵編目錄,以便它返回upacked當acutal目錄
def zipdir(path, ziph):
# ziph is zipfile handle
for root, dirs, files in os.walk(path):
for file in files:
ziph.write(os.path.join(root, file),arcname=file)
zip = zipfile.ZipFile('/path/to/directory.zip','w')
zipdir('/path/to/directory/',zip)
當我解壓這個我結束了與目錄的內容,而不是到包含文件的原始目錄。我應該如何改變這個,以便解壓縮返回原始目錄中的文件仍然在裏面? 。
即)解壓 - > /解壓縮/位置/目錄/ file_from_directory
,而不是
解壓 - > /解壓縮/位置/ file_from_directory
與消除arcname說法的問題在於,它包括高DIRECTO也是如此。我正在編寫的腳本將tar文件轉換爲zip文件,並且用作輸入的tar文件位於/transform/gwarner/test/file.tgz目錄中。如果我在沒有arcname語句的情況下運行它,則.zip文件將包含根目錄下最高級別目錄的所有內容。我只想包含最低的目錄。 –
你的意思是/test/file.tgz?在這種情況下,只需將路徑字符串拆分爲'/'(如果要保留泛型,則使用'os.path.sep'),保留最後兩個元素(最深的目錄和文件名)並用'/'連接。 –
對不起,我有點困惑。你是否在討論os.walk(path)中的'root,dirs,files?'行? –