python 某个文件夹中全是jpg后缀的图片,有些图片名称中带“副本”两字,现在需要判断删掉这两个字后是否与其他图片重名,若重名则删掉该图片,不重名的话就将该图片名字删掉“副本”两字
时间: 2024-12-16 22:24:04 浏览: 5
在Python中,你可以使用os模块来遍历文件夹,naming库来处理文件名,以及hashlib来生成哈希值作为唯一标识,避免同名文件冲突。这里是一个简单的步骤描述:
1. 首先,导入必要的库:
```python
import os
from os import path
import hashlib
```
2. 定义一个函数来检查新文件名是否存在:
```python
def is_duplicate(new_name, root_dir):
full_path = path.join(root_dir, new_name)
return path.exists(full_path)
```
3. 循环遍历文件夹中的所有.jpg文件,并处理"副本"版本的文件:
```python
root_dir = 'your_directory_containing_jpgs'
for filename in os.listdir(root_dir):
if filename.endswith('.jpg') and '副本' in filename:
# 创建新的文件名
new_filename = filename.replace('副本', '')
# 计算新文件名的哈希值,作为潜在唯一标识
hash_object = hashlib.md5(new_filename.encode())
unique_id = hash_object.hexdigest()
# 如果新文件名已经存在,加上哈希值
new_full_name = f'{new_filename}_{unique_id}.jpg'
# 判断新文件名是否唯一
if not is_duplicate(new_full_name, root_dir):
# 删除原文件并保存新命名的文件
os.remove(path.join(root_dir, filename))
os.rename(path.join(root_dir, filename), path.join(root_dir, new_full_name))
else:
print(f"{filename} will be skipped due to name conflict.")
```
注意替换`'your_directory_containing_jpgs'`为实际图片文件夹路径。
阅读全文