我正在尝试编写一个程序,根据文件名中指示的相应组将大量文件分类到文件夹中。我编写了以下代码,但是当我运行它时,即使文件位于给定路径中,它也给了我一个找不到文件的错误。我将不胜感激任何帮助,以找出问题所在。
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
新名称恰好是不存在的目录中的文件名,则os.rename
不会自动创建新目录(递归(。
要首先创建目录,您可以(在 Python 3 中(使用:
os.makedirs(dirname, exist_ok=True)
其中 dirname 可以包含子目录(现有或非(。
或者,使用 os.renames
,它可以处理新目录和中间目录。从文档中:
递归目录或文件重命名功能。工作方式类似于 rename((,除了首先尝试创建使新路径名良好的任何中间目录
os.rename 需要路径,所以它应该看起来像:os.rename(路径+old_name, 路径+new_name(