os.rename 错误 "The system cannot find the path specified"
os.rename Error "The system cannot find the path specified"
已经有人在 SO 上问过类似的问题,我实际上是从这里的 post 那里得到这段代码的,但是我在调试这个错误时遇到了麻烦。
import os
paths = (os.path.join(root, filename)
for root, _, filenames in os.walk(r'C:\Users\kevin\Diamond Line JPEGS\Diamond Line JPEGS')
for filename in filenames)
for path in paths:
# the '#' in the example below will be replaced by the '-' in the filenames in the directory
newname = path.replace(' ', '_')
if newname != path:
print(path)
print(newname)
os.rename(path, newname)
当我使用 os.rename(path,path)
时,它起作用了,所以我知道问题一定出在 newname 上,很可能是我对 os.rename
的工作原理缺乏了解。它不认为 newname 存在,如以下错误所突出显示:
[WinError 3] The system cannot find the path specified: 'C:\Users\kevin\Diamond Line JPEGS\Diamond Line JPEGS\Test 01.jpg' -> 'C:\Users\kevin\Diamond_Line_JPEGS\Diamond_Line_JPEGS\Test_01.jpg'
我不认为新的目录名称需要“存在”才能让您重命名它,所以我很困惑。我已经阅读了文档,但我仍然不明白为什么它会失败。我正在使用的 Python 文件位于同一个文件夹中(尽管我认为这不会对这里产生影响)。
使用 os.renames 而不是 os.rename。问题是 os.rename 仅更改最上层目录的名称,因此在您的情况下,它会在“C:\Users\kevin\Diamond_Line_JPEGS\Diamond_Line_JPEGS\”中查找不存在的“Test 01.jpg”。
已经有人在 SO 上问过类似的问题,我实际上是从这里的 post 那里得到这段代码的,但是我在调试这个错误时遇到了麻烦。
import os
paths = (os.path.join(root, filename)
for root, _, filenames in os.walk(r'C:\Users\kevin\Diamond Line JPEGS\Diamond Line JPEGS')
for filename in filenames)
for path in paths:
# the '#' in the example below will be replaced by the '-' in the filenames in the directory
newname = path.replace(' ', '_')
if newname != path:
print(path)
print(newname)
os.rename(path, newname)
当我使用 os.rename(path,path)
时,它起作用了,所以我知道问题一定出在 newname 上,很可能是我对 os.rename
的工作原理缺乏了解。它不认为 newname 存在,如以下错误所突出显示:
[WinError 3] The system cannot find the path specified: 'C:\Users\kevin\Diamond Line JPEGS\Diamond Line JPEGS\Test 01.jpg' -> 'C:\Users\kevin\Diamond_Line_JPEGS\Diamond_Line_JPEGS\Test_01.jpg'
我不认为新的目录名称需要“存在”才能让您重命名它,所以我很困惑。我已经阅读了文档,但我仍然不明白为什么它会失败。我正在使用的 Python 文件位于同一个文件夹中(尽管我认为这不会对这里产生影响)。
使用 os.renames 而不是 os.rename。问题是 os.rename 仅更改最上层目录的名称,因此在您的情况下,它会在“C:\Users\kevin\Diamond_Line_JPEGS\Diamond_Line_JPEGS\”中查找不存在的“Test 01.jpg”。