使用shutil.make_archive('newarchive', 'zip', <directory>)
在Python 3.5中創建ZIP歸檔文件在Windows上的行爲不像預期的那樣。Python的shutil.make_archive()在Windows上創建點目錄
在Linux上它工作正常,directory
內的所有文件和文件夾已存檔,並且在zip文件中可見。但是,在Windows上會創建一個額外的文件夾 - 點文件夾.
。見截圖:
文件夾本身是空的,但我想獲得完全擺脫它(另一個過程是非常嚴格的結構)。解決方法是不使用make_archive()
並手動創建ZipFile
,但我覺得該功能應該首先工作。
這是一個錯誤還是我錯過了什麼?
編輯:點文件存在於7Zip的以及總指揮官。 這是我(的Python 3.5.1的Windows 10),最短的工作片段:
import shutil
import os
os.chdir('C:/Users/melka/Downloads')
shutil.make_archive('testing', 'zip', 'zip_test')
這個創建的C:\Users\melka\Downloads\zip_test
內容的新ZIP,其最終被:
然而,手動創建使用此代碼的zip不創建點文件:
import os
import zipfile
def make_zip(zip_name, path):
zip_handle = zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED)
os.chdir(path)
for root, dirs, files in os.walk('.'):
for file in files:
zip_handle.write(os.path.join(root, file))
os.chdir('C:/Users/melka/Downloads')
make_zip('anotherzip.zip', 'zip_test')
無法重現(使用python 2.7)。你的命令行是不正確的順便說一句。你確定這不是你的圖形化解析器的問題嗎?我正在使用7-zip,並且沒有看到任何點目錄。 –
這是不正確的,只是因爲在這裏重新輸入。我提供了不適合我的代碼示例。我很確定,我嘗試使用Total Commander和7Zip打開並且點文件在兩者中都顯示(當通過'make_archive'創建時) - 當通過自定義函數創建時,它不存在於任何一個unarchiver中。 –
嘗試將記錄器傳遞給'shutil.make_archive'的'logger'參數?可以提供更多信息。 – joeb