python 自动分类照片,把所有文件夹,子文件夹,里面有多个相同的文件名字,移动到相同名字的文件夹内,并自动序号
时间: 2024-03-23 12:42:35 浏览: 18
好的,你可以尝试使用以下代码实现自动分类照片的功能:
```python
import os
import shutil
def classify_photos(root_dir):
# 遍历指定目录下的所有文件和子文件夹
for subdir, _, files in os.walk(root_dir):
# 记录每个文件名出现的次数
file_count = {}
for file in files:
# 获取文件名和后缀
file_name, file_ext = os.path.splitext(file)
# 统计文件名出现的次数
if file_name not in file_count:
file_count[file_name] = 1
else:
file_count[file_name] += 1
# 将多个同名文件移动到同名文件夹
for file_name, count in file_count.items():
if count > 1:
target_dir = os.path.join(root_dir, file_name)
if not os.path.exists(target_dir):
os.mkdir(target_dir)
# 根据序号重命名文件
for i, file in enumerate(files):
file_name, file_ext = os.path.splitext(file)
if file_name == file_name:
file_path = os.path.join(subdir, file)
new_file_name = '{}_{:03d}{}'.format(file_name, i, file_ext)
shutil.move(file_path, os.path.join(target_dir, new_file_name))
if __name__ == '__main__':
classify_photos('/path/to/root/dir')
```
这段代码跟之前的代码类似,但是在将多个同名文件移动到同名文件夹时,还会自动给文件加上序号。具体来说,它会先遍历目录下的所有文件和子文件夹,并记录每个文件名出现的次数。然后,对于出现次数大于1的文件名,它会创建同名文件夹(如果不存在),并将该文件名对应的所有文件按照序号重命名后移动到同名文件夹中。这样就可以将所有多个相同名字的文件都归类到同一个文件夹中,并自动加上序号。同样,你需要将`/path/to/root/dir`替换为实际的目录路径。