2016-05-05 3 views
-1

Dates16ディレクトリには、最初のリストの下にあるようないくつかのフォルダがあり、各フォルダには多くの.txtファイルがあります。私は、私は2番目のリストにお見せよう複数のフォルダからファイルの名前を変更します。 OSError:[Errno 2]そのようなファイルまたはディレクトリがありません

>>> oldNames 
['./Documents/Dates16/Forest/file0.txt' 
'./Documents/Dates16/Forest/file1.txt' 
'./Documents/Dates16/Forest/file2.txt' 
'./Documents/Dates16/Wet/file0.txt' 
'./Documents/Dates16/Wet/file1.txt' 
'./Documents/Dates16/Winter/file0.txt' 
'./Documents/Dates16/Winter/file1.txt' 
'./Documents/Dates16/Winter/file2.txt'] 

>>> newNames 
['./Documents/Dates16/Forest/RT-file0.txt' 
'./Documents/Dates16/Forest/RM-file1.txt' 
'./Documents/Dates16/Forest/RA-file2.txt' 
'./Documents/Dates16/Wet/RA-file0.txt' 
'./Documents/Dates16/Wet/RT-file1.txt' 
'./Documents/Dates16/Winter/RS-file0.txt' 
'./Documents/Dates16/Winter/RT-file1.txt' 
'./Documents/Dates16/Winter/RT-file2.txt'] 

どちらのリストには、同じ長さを持っていると私はこのコードを使用していたファイルの名前を変更するが、OSErrorのを返すために、このコードは最初の要素の名前を変更し、それらのファイルの名前を変更したいですリストを作成した後、ループを解除して出力エラーを再試行します。どうすればこの問題を解決できますか?おかげ

import os 
for i in oldNames: 
    for j in newNames: 
     os.rename(i,j) 
Traceback (most recent call last): 
    File "<stdin>", line 3, in <module> 
OSError: [Errno 2] No such file or directory 

は、これは私が私が探しているものを説明しPython OSError: [Errno 2] No such file or directoryから重複していない、また、私のコードは何をするのでしょう。他の投稿私は本当にそれを理解していないと唯一のエラーを修正するように頼んだ

+0

あなたのネストされたループは、各ファイルを複数回名前を変更しようとしている実行しますが。最初のファイルの名前が変更されると、2番目の名前変更には存在しなくなります。入れ子にされたループを緩めてください! – cdarke

+0

[Python OSError:\ [Errno 2 \]の複製はありません。そのようなファイルやディレクトリはありません。](http://stackoverflow.com/questions/1927284/python-oserror-errno-2-no-such-file-or-directory ) –

答えて

2

あなたは代わりに、ネストされたforループの

for i, j in zip(oldNames, newNames): 
    os.rename(i, j) 

を使用する必要があります。

zip function反復し

os.rename(oldNames[0], newNames[0]) 
os.rename(oldNames[1], newNames[1]) 
os.rename(oldNames[2], newNames[2]) 
.... 

のようなロックステップで二つの配列のネストされたループは、実際に

os.rename(oldNames[0], newNames[0]) 
os.rename(oldNames[0], newNames[1]) 
os.rename(oldNames[0], newNames[2]) 
os.rename(oldNames[0], newNames[3]) 
.... 
os.rename(oldNames[1], newNames[0]) 
os.rename(oldNames[1], newNames[1]) 
os.rename(oldNames[1], newNames[2]) 
os.rename(oldNames[1], newNames[3]) 
.... 
os.rename(oldNames[2], newNames[0]) 
os.rename(oldNames[2], newNames[1]) 
os.rename(oldNames[2], newNames[2]) 
os.rename(oldNames[2], newNames[3]) 
........ 
+0

私はそれをクリアしていただきありがとうございます – Jose

0
for i in oldNames: 
    for j in newNames: 

これは問題です。ファイルがもはや存在しなくても(名前が変更されたため)、oldName Jの各ファイル名を変更しています。

関連する問題