[英]OSError: [Errno 2] No such file or directory – Python won't accept a variable when trying to rename files
[英]Rename files from several folders. OSError: [Errno 2] No such file or directory
目錄Dates16包含幾個文件夾,如第一個列表中的下面的“ show you”(顯示)一樣,每個文件夾中都有很多.txt文件。 我想重命名這些文件,就像我在第二個列表中顯示的那樣
>>> 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]沒有這樣的文件或目錄,我沒有解釋我要查找的內容以及代碼的作用。 我真的不明白的另一篇文章,只要求修復錯誤
你應該用
for i, j in zip(oldNames, newNames):
os.rename(i, j)
而不是嵌套的for循環。
zip
函數以鎖定步驟迭代兩個數組,例如
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])
........
for i in oldNames:
for j in newNames:
這就是問題。 您正在將每個oldName的文件名更改J次,即使第一次后該文件不再存在(因為它已被重命名)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.