Python 在os.rename中找不到文件错误

Python 在os.rename中找不到文件错误,python,python-3.x,Python,Python 3.x,我正在尝试编写一个程序,根据文件名中所示的相应组将大量文件分类到文件夹中。我编写了下面的代码,但当我运行它时,它会给我一个文件未找到错误,即使该文件位于给定的路径中。如果能帮我找出问题所在,我将不胜感激 import os old_dir = '/Users/User/Desktop/MyFolder' for f in os.listdir(old_dir): file_name, file_ext = os.path.splitext(f) file_name.split

我正在尝试编写一个程序,根据文件名中所示的相应组将大量文件分类到文件夹中。我编写了下面的代码,但当我运行它时,它会给我一个文件未找到错误,即使该文件位于给定的路径中。如果能帮我找出问题所在,我将不胜感激

import os

old_dir = '/Users/User/Desktop/MyFolder'

for f in os.listdir(old_dir):
    file_name, file_ext = os.path.splitext(f)
    file_name.split('-')

    split_file_name = file_name.split('-')

    new_dir = os.path.join(old_dir,
                           '-'.join(split_file_name[:3]),
                           split_file_name[5],
                           f)

    os.rename(os.path.join(old_dir, f), new_dir)
以下是错误:

Traceback (most recent call last):
  File "/Users/User/Documents/Sort Files into Folders/Sort Files into Folders.py", line 19, in <module>
    os.rename(os.path.join(old_dir, f), new_dir)
FileNotFoundError: [Errno 2] No such file or directory: '/Users/User/Desktop/MyFolder/AHA35-3_30x1_12-31-7d-g1a1-ArmPro.jpg' -> '/Users/User/Desktop/MyFolder/AHA35-3_30x1_12-31/ArmPro/AHA35-3_30x1_12-31-7d-g1a1-ArmPro.jpg
回溯(最近一次呼叫最后一次):
文件“/Users/User/Documents/Sort Files into Folders/Sort Files into Folders.py”,中的第19行
重命名(os.path.join(旧目录,f),新目录)
FileNotFoundError:[Errno 2]没有这样的文件或目录:'/Users/User/Desktop/MyFolder/AHA35-3_30x1_12-31-7d-g1a1-ArmPro.jpg'->'/Users/User/Desktop/MyFolder/AHA35-3_30x1_12-31-7d-g1a1-ArmPro.jpg'>'/

os.rename
不会自动创建新目录(递归),如果新名称恰好是不存在的目录中的文件名

要首先创建目录,可以(在Python 3中)使用:

其中dirname可以包含子目录(现有或不存在)


或者,使用可以处理新目录和中间目录的
os.renames

递归目录或文件重命名功能。与rename()类似,只是先尝试创建使新路径名正常所需的任何中间目录


os.rename需要路径,因此它应该如下所示:
重命名(路径+旧名称,路径+新名称)

您是否尝试打印旧名称和新名称,以确保它们与您想象的一样?它是在每个文件上都失败了,还是只是在一些文件上失败了?是的,旧的和新的名称与预期的一样。它在每个方面都失败了file@Evert不,我正在努力创造them@Evert我假设os.rename会创建它们,如果它们不存在的话。我想这是我的问题。谢谢你,帮我弄明白了。
os.makedirs(dirname, exist_ok=True)