
本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
你是否曾经面对过这样的情况:手机里数百张照片杂乱无章,电脑中的项目素材命名混乱,找一张特定的图片要翻找半天?在数字资产日益增长的今天,高效的文件管理已经成为提升工作效率的关键因素。
在开始编码前,我们先明确一下具体需求:
有了明确的需求,接下来我们借助CodeBuddy的AI能力快速实现这个功能。我们向CodeBuddy提出了简洁明了的需求描述:
我有一个文件夹,里面有很多图片文件,文件名杂乱无章。我想按"序号日期描述"的格式批量重命名这些文件,如何用Python脚本实现?
CodeBuddy迅速理解了需求并给出了完整的解决方案:

除了生成代码外,CodeBuddy还贴心地提供了详细的使用说明,让即使是Python初学者也能轻松上手:

理论再完美,也需要实践检验。我们将在之前获取的阴阳师壁纸图片上测试这个脚本。首先看一下这些图片的原始命名状态:

可以看到,这些图片的命名确实比较混乱,不利于管理和查找。接下来,我们在PyCharm中运行脚本,按照提示输入相关信息:

运行完成后,我们再次查看文件夹,检查图片是否已按预期重命名:

完美!所有图片都已按照"序号日期描述"的统一格式重命名,整个过程只花了不到一分钟的时间。
让我们深入了解一下这段代码的核心功能和技术亮点:
import os
import re
from datetime import datetime
from PIL import Image
from PIL.ExifTags import TAGS
def get_image_date(image_path):
"""尝试从图片的EXIF信息中获取拍摄日期"""
try:
img = Image.open(image_path)
exif = img._getexif()
if exif:
for tag, value in exif.items():
decoded = TAGS.get(tag, tag)
if decoded == 'DateTimeOriginal':
return value.split()[0].replace(':', '-')
except (AttributeError, KeyError, IndexError, IOError):
pass
return datetime.now().strftime('%Y-%m-%d') # 如果没有日期信息,使用当前日期
def clean_description(text):
"""清理描述文本"""
# 移除特殊字符,只保留字母、数字、中文和空格
cleaned = re.sub(r'[^\w\u4e00-\u9fff\s]', '', text)
# 移除多余空格
cleaned = ' '.join(cleaned.split())
return cleaned.strip()
def batch_rename_images(folder_path, description_source='filename'):
"""批量重命名图片文件"""
# 获取所有图片文件
image_exts = ('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp')
files = [f for f in os.listdir(folder_path) if f.lower().endswith(image_exts)]
files.sort() # 按文件名排序
print(f"找到 {len(files)} 个图片文件")
for i, filename in enumerate(files, start=1):
old_path = os.path.join(folder_path, filename)
# 获取日期
date = get_image_date(old_path)
# 获取描述
if description_source == 'filename':
# 从原文件名提取描述(去掉扩展名)
basename = os.path.splitext(filename)[0]
description = clean_description(basename)
else:
# 手动输入描述
description = input(f"请输入文件 {filename} 的描述: ")
description = clean_description(description)
# 构建新文件名
new_name = f"{i:03d}_{date}_{description}{os.path.splitext(filename)[1]}"
new_path = os.path.join(folder_path, new_name)
# 处理文件名冲突
counter = 1
while os.path.exists(new_path):
new_name = f"{i:03d}_{date}_{description}_{counter}{os.path.splitext(filename)[1]}"
new_path = os.path.join(folder_path, new_name)
counter += 1
# 重命名文件
os.rename(old_path, new_path)
print(f"重命名: {filename} -> {new_name}")
if __name__ == "__main__":
folder = input("请输入图片文件夹路径: ")
source = input("描述来源 (1: 原文件名, 2: 手动输入): ")
description_source = 'filename' if source == '1' else 'input'
batch_rename_images(folder, description_source)
print("批量重命名完成!")通过本文的实践,我们看到了如何利用CodeBuddy快速开发一个实用的图片批量重命名工具。整个过程从需求提出到功能实现,再到实际应用,仅用了几分钟时间,充分体现了AI辅助编程的高效性。
这个简单而实用的Python脚本不仅解决了图片文件管理的实际问题,还展示了现代编程工具如何帮助我们提升工作效率。无论你是专业开发者还是编程爱好者,CodeBuddy这类AI编程助手都能帮你更快、更好地实现创意。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。