我必須使用Python 2.6! 這是一個我真正想要自動化的任務,情況是靜態的,一旦我創建了這個,我就會變成金色的(好的)。 我必須創建一個獨立的腳本(空閒,我希望),將:試圖解壓縮zipfile,然後在結果文件夾中找到並解壓縮任何/所有zip文件
- 解壓一個原始的壓縮文件(in_Zip)到zip文件當前所在的文件夾中的內容。
- 轉到步驟1產生的唯一(非ZIPPED)文件夾(實際上是學生用戶名'aforker','allisw99','btaylor7'等)。(這些獨特學生文件夾中可能有1到40個任意位置)
- 在每個獨特的文件夾('aforker','allisw99','btaylor7'等)中提取任何和所有(可能是沒有,可能是3或4).zip文件, 'aforker','allisw99','btaylor7'等),而'導航'即不會掛在可能.pdf或docx文件,可能或不可能駐留在唯一文件夾中('aforker','allisw99', 'btaylor7'等)
這就是我到目前爲止:(和它'工作')(我會修改緯度呃,這樣我就不需要硬編碼的原始zip文件(in_Zip))
import os, os.path, zipfile
inZip = r'D:\D_Drive_Documents\Student_Work_Sample_usecopy1\2012-09-18 Lab_2.zip'
outDir = r"D:\D_Drive_Documents\Student_Work_Sample_usecopy1"
z = zipfile.ZipFile(in_Zip,'a')
z.extractall(outDir)
zipContents = z.namelist()
print zipContents
z.close
它的工作原理,我得到在Python程序中運行以下:
'>>> ================================ RESTART ================================'
'>>>'
['Lab_2/aforker/', 'Lab_2/aforker/aforker_Lab2.zip', 'Lab_2/allisw99/', 'Lab_2/allisw99/allisw99_Lab2.zip', 'Lab_2/allisw99/allisw99_Lab2_Bonus.pdf', 'Lab_2/allisw992/', 'Lab_2/allisw992/allisw99_Lab2_Bonus.pdf', 'Lab_2/btaylor7/', 'Lab_2/btaylor7/2nd_btaylor7_Lab2.zip', 'Lab_2/btaylor7/btaylor7_Lab2.zip', 'Lab_2/']
'>>> '
但是,我可以」不知道是如何進入每個獨特的文件夾:aforker,allisw99等,然後提取'aforker','allisw99'等任何和所有拉鍊。
我對其他人有一些建議論壇/列表服務,但他們都涉及摧毀我當前的代碼,並在Windows命令窗口等事情。 a)我無法讓他們工作,並且b)它不能真正幫助我,因爲我需要一個獨立的.py文件來完成這一切工作。
爲什麼?你問?我將使用它來創建一個ArcGIS「工具」,需要一個腳本(至少對我來說,理解它):-)
預先感謝您的任何和所有的建議,提示等
對於記錄,我曾嘗試以下@上面的代碼的底部:
for item in zipContents:
itemLoc = os.path.join(outDir,item)
y = zipfile.ZipFile(itemLoc,'a')
y.extractall(os.path.aplit(itemLoc)[0])
y.close
,但我得到了以下錯誤:
Traceback (most recent call last):
File "D:\D_Drive_Documents\Scripts\Unzip_a_zip_of_zips\Scripts\unzip_a_zip.py", line 50, in <module>
y = zipfile.ZipFile(itemLoc,'a')
File "C:\Python26\ArcGIS10.0\lib\zipfile.py", line 687, in __init__
self.fp = open(file, modeDict[mode])
IOError: [Errno 13] Permission denied: 'D:\\D_Drive_Documents\\Student_Work_Sample_usecopy1\\Lab_2/aforker/'
先感謝您的任何和所有輸入!
格雷格
注意:惡意創建(或無知)zip壓縮文件可以覆蓋'outDir'之外的文件。檢查「item」不是絕對路徑,或者其中沒有「..」。 – jfs