python 自动分类照片,把所有文件夹,子文件夹,里面有多个相同的文件名字,移动到相同名字的文件夹内,并自动给文件名序号
时间: 2023-08-18 17:04:12 浏览: 289
好的,你的问题是如何使用 Python 自动分类照片,将所有文件夹、子文件夹中的相同文件名的文件移动到对应的文件夹中,并自动给文件名加上序号。
可以使用 Python 的 os 和 shutil 模块来实现这个功能,具体步骤如下:
1. 遍历指定目录下的所有文件和子文件夹,获取所有文件的路径和文件名。
2. 对于每个文件,获取其文件名和扩展名。
3. 判断该文件名是否已经存在对应的文件夹中,如果存在,将该文件移动到对应文件夹中,并重命名文件名,加上序号。
4. 如果不存在对应的文件夹,则新建一个文件夹,并将该文件移动到其中,并重命名文件名,加上序号。
具体的代码实现如下:
```python
import os
import shutil
def auto_classify_photos(root_dir):
# 遍历指定目录下的所有文件和子文件夹
for root, dirs, files in os.walk(root_dir):
# 用一个字典来记录文件名和文件路径的对应关系
file_dict = {}
for file in files:
# 获取文件名和扩展名
file_name, file_ext = os.path.splitext(file)
# 将文件名和文件路径添加到字典中
if file_name in file_dict:
file_dict[file_name].append(os.path.join(root, file))
else:
file_dict[file_name] = [os.path.join(root, file)]
# 遍历字典,将相同文件名的文件移动到同一个文件夹中,并加上序号
for file_name, file_paths in file_dict.items():
if len(file_paths) > 1:
# 新建一个以文件名命名的文件夹
new_dir = os.path.join(root, file_name)
if not os.path.exists(new_dir):
os.makedirs(new_dir)
# 将相同文件名的文件移动到新建的文件夹中
for i, file_path in enumerate(file_paths):
new_file_name = '{}_{}{}'.format(file_name, i+1, file_ext)
new_path = os.path.join(new_dir, new_file_name)
shutil.move(file_path, new_path)
```
你可以将需要自动分类的照片所在的目录传入 auto_classify_photos 函数中,该函数会自动将所有相同文件名的文件移动到同一个文件夹中,并加上序号。
阅读全文