python 自动分类照片,把所有文件夹,子文件夹,jpg格式,里面有多个相同的文件名字,移动到相同名字的文件夹内,并自动序号
时间: 2024-03-23 14:42:38 浏览: 16
好的,你可以尝试使用以下代码实现自动分类照片的功能,只针对 jpg 格式的文件:
```python
import os
import shutil
def classify_photos(root_dir):
# 遍历指定目录下的所有文件和子文件夹
for subdir, _, files in os.walk(root_dir):
# 记录每个文件名出现的次数
file_count = {}
for file in files:
# 判断文件格式是否为 jpg
if not file.endswith('.jpg'):
continue
# 获取文件名和后缀
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):
# 判断文件格式是否为 jpg,并且文件名匹配
if file.endswith('.jpg') and os.path.splitext(file)[0] == 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')
```
这段代码跟之前的代码类似,但是加了一个判断文件格式是否为 jpg 的条件。只有文件名匹配且格式为 jpg 的文件才会被归类。同样,你需要将`/path/to/root/dir`替换为实际的目录路径。