python 判断图片是否重名
时间: 2023-07-08 13:47:33 浏览: 96
可以使用Python的os模块和glob模块来实现判断图片是否重名的功能。
首先,可以使用os模块的listdir函数来获取指定目录下的所有文件名,然后使用glob模块的glob函数来筛选出所有图片文件的文件名,如下所示:
```python
import os
import glob
dir_path = '/path/to/directory' # 指定目录路径
img_files = glob.glob(os.path.join(dir_path, '*.jpg')) # 筛选出所有以.jpg结尾的文件名
```
接着,可以使用Python的集合(Set)来判断图片文件名是否重复,如下所示:
```python
if len(img_files) == len(set(img_files)):
print('图片文件名没有重名')
else:
print('图片文件名存在重名')
```
其中,集合的长度和列表的长度相同时,说明没有重复元素,否则说明存在重复元素。
需要注意的是,上述代码只是通过文件名来判断是否重名,如果有多个不同目录下的文件名相同,也会被判断为重名。如果需要更精确的判断,可以考虑使用文件的MD5值或者SHA1值等来判断文件是否相同。
相关问题
python 批量修改图片名并判断是否重名
好的,您可以使用Python的os和shutil模块来批量修改图片名,并使用字典来判断是否重名。下面是一个示例代码:
```python
import os
import shutil
path = 'your/image/folder/path'
new_name_prefix = 'new_name_prefix'
count = 1
name_dict = {}
for file_name in os.listdir(path):
if file_name.endswith('.jpg') or file_name.endswith('.png'):
new_file_name = new_name_prefix + '_' + str(count) + file_name[-4:]
old_file_path = os.path.join(path, file_name)
new_file_path = os.path.join(path, new_file_name)
if new_file_name in name_dict:
print(f'{new_file_name} already exists!')
else:
name_dict[new_file_name] = True
shutil.move(old_file_path, new_file_path)
print(f'{file_name} renamed to {new_file_name}')
count += 1
```
以上代码会将指定路径下的所有jpg和png图片文件,重命名为"new_name_prefix_数字.jpg/png"的格式,并且会打印出重命名过程,同时使用字典来判断是否重名。
python 某个文件夹中全是jpg后缀的图片,有些图片名称中带“副本”两字,现在需要判断删掉这两个字后是否与其他图片重名,若重名则删掉该图片,不重名的话就将该图片名字删掉“副本”两字
在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'`为实际图片文件夹路径。
阅读全文