os.rename中找不到文件错误

时间:2017-11-10 03:33:37

标签: 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('-')

    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

2 个答案:

答案 0 :(得分:1)

如果新名称恰好是不存在的目录中的文件名,则

os.rename不会自动创建新目录(递归)。

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

os.makedirs(dirname, exist_ok=True)

其中dirname可以包含子目录(是否存在)。

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

  

递归目录或文件重命名功能。像rename()一样工作,除了首先尝试创建新路径名所需的任何中间目录之外

答案 1 :(得分:0)

os.rename 需要路径,所以它应该是这样的: os.rename(path+old_name, path+new_name)