我必须使用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