2016-11-21 22 views
0

フォルダ内のすべてのファイル(サブフォルダを含む)を再帰的にリストし、zipファイルを解凍しようとしています。これは私がやっていることです:フォルダ内のファイルを再帰的にリストし、zipファイルを解凍します

def scan(real_path): 
    matches = [] 
    for root, dirnames, filenames in walk(real_path): 
     for filename in fil(filenames, '*'): 
      matches.append(path.join(root, filename)) 
    return matches 


def unzip(destination, path): 
    z = ZipFile(path, mode = "r") 
    for archive in z.namelist(): 
     content = z.read(archive) 
     archive = open("%s/%s" % (destination, archive), "w") 
     archive.write(content) 
     z.close() 


def startup_files(starting_over = False): 
    print "STARTING FILES AGAIN..." if starting_over else \ 
      "STARTING FILES..." 

    x = scan(folder) 
    print "Files found in folder:" 
    print x 
    for archive in x: 
     archive = Archive.details(archive) 
     print "READING:", archive.full_path 
     if archive.extension == ".ZIP": 
      unpack_zip(archive) 
      remove(archive.full_path) 
      startup_files(True) 

これは、この奇妙なエラーの原因です。 SFPDB001.GBK

出力は次のとおりです:

反復1:OK

STARTING FILES... 
Files found in folder: 
['arp\\_input\\backups\\1.zip', 'arp\\_input\\backups\\2.ZIP'] 
READING: C:\Users\G1745 IRON\Development\LL\ARP\arp\_input\backups\1.zip 

イテレーション2:私は、私は、このファイルを持っているファイルで2つのファイル、1.zip2.ZIP、とスクリプトをテストしていOK

STARTING FILES AGAIN... 
Files found in folder: 
['arp\\_input\\backups\\2.ZIP', 'arp\\_input\\backups\\SFPDB001.GBK'] 
READING: C:\Users\G1745 IRON\Development\LL\ARP\arp\_input\backups\2.ZIP 

反復3:エラー:スキャン機能がフォルダ内の正しいファイルを見つけていますが、反復処理が試行されていますo利用できないファイルに到達する。

STARTING FILES AGAIN... 
Files found in folder: 
['arp\\_input\\backups\\SFPDB001.GBK'] 
READING: C:\Users\G1745 IRON\Development\LL\ARP\arp\_input\backups\SFPDB001.GBK 
READING: C:\Users\G1745 IRON\Development\LL\ARP\arp\_input\backups\SFPDB001.GBK 
READING: C:\Users\G1745 IRON\Development\LL\ARP\arp\_input\backups\2.ZIP 

C:\Users\G1745 IRON\Development\LL\ARP\arp\_input\backups\2.ZIP 

Traceback (most recent call last): 
    File "arp\__main__.py", line 22, in <module> 
    main() 
    File "arp\__main__.py", line 18, in main 
    ARP(p.parse_args()).run() 
    File "C:\Users\G1745 IRON\Development\LL\ARP\arp\arp.py", line 26, in run 
    self.startup_files() 
    File "C:\Users\G1745 IRON\Development\LL\ARP\arp\arp.py", line 46, in startup_files 
    self.unpack_zip(archive) 
    File "C:\Users\G1745 IRON\Development\LL\ARP\arp\arp.py", line 62, in unpack_zip 
    Zip.unzip(self.folder, archive.full_path) 
    File "C:\Users\G1745 IRON\Development\LL\ARP\arp\zip.py", line 17, in unzip 
    z = ZipFile(path, mode = "r") 
    File "C:\Python25\lib\zipfile.py", line 339, in __init__ 
    self.fp = open(file, modeDict[mode]) 
IOError: [Errno 2] No such file or directory: 'C:\\Users\\G1745 IRON\\Development\\LL\\ARP\\arp\\_input\\backups\\2.ZIP' 

私はなぜこれが起こっている任意のアイデアを持っていない...私は、JSの背景を持っている、と私は今のpythonで始まるので、私は何かをする必要があるかどうかは知りません。

OBS:私はPython v2.5を使用しています。レガシーコードです。

+0

まあ、エラーは私たちの多くの可能性を残しません...ファイル 'C:\\ Users \\ G1745 IRON \\開発\\ LL \\ ARP \\ arp \\ _入力\\バックアップ\\ 2。 ZIPは全く存在していないようだ。たぶんそれはスペルミスですか? – lucasnadalutti

+0

ところで、あなたが言ったように、エラーは繰り返し3にはありません...それはまだ反復2です。 – lucasnadalutti

+0

ファイルはプログラムの開始時に存在しますが、2回目の反復で削除されます。 2番目の反復は、スキャンされたファイルの配列にないファイルを繰り返しています...本当に奇妙なことです。 –

答えて

0

私は私がループからそれを呼び出したときに、私はstartup_filesを返す必要があり、エラーが見つかりました:

return self.startup_files(True) 

すべてです。

関連する問題