Python 2.6を使用する必要があります!これは私が本当に自動化したいタスクです。状況は静的であり、これを作成すると、私は黄金になります(良い)。次のようなスタンドアロンスクリプトを作成する必要があります(アイドル状態で、私は願っています)。
- 単一の元のzipファイル(in_Zip)を、zipファイルが現在存在するフォルダーの内容に解凍します。
- 手順1で作成された一意の(非ZIPPED)フォルダー(実際には学生のユーザー名'aforker'、'allisw99'、'btaylor7'など)に移動します(これらの一意の学生フォルダーは1〜40個あります)。
- 各一意のフォルダー('aforker'、'allisw99'、'btaylor7'など)内で、関連する前述の一意のフォルダー('aforker'、 'allisw99'、'btaylor7'など)、'navigating'、つまり、一意のフォルダー('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」などのすべてのzipを抽出する方法です。
他のフォーラム/リストサーブについていくつか提案がありましたが、それらはすべて、現在のコードをゴミ箱に移動し、Windowsコマンドウィンドウで何かを行うことなどを含みます。a)それらを機能させることができません。b)機能しません。これをすべて機能させるには、スタンドアロンの.pyファイルが1つ必要なので、本当に役に立ちます。
なんで?あなたが尋ねる?これを使用して、1つのスクリプトを必要とする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/'
ありとあらゆる入力を事前に感謝します!
グレッグ