本文主要是介绍Python脚本实现图片文件批量命名,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Python脚本实现图片文件批量命名》这篇文章主要为大家详细介绍了一个用python第三方库pillow写的批量处理图片命名的脚本,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下...
前言
本文介绍一个用python第三方库pillow写的批量处理图片命名的脚本,以及脚本对应的使用tkinter库写的GUI界面并把它打包成exe可执行文件,打包成可执行文件的好处就是它支持多种操作系统,如 Windows、linux 和 MAC OS 等。
源码
批量处理图片尺寸脚本源码
import os # 文件管理模块 import shutil # 文件复制模块 # 定义图片文件批量重命名函数 def rename_files(old_path, new_path,prefix,ext=['jpg','png','jpeg','gif','bmp','tif','tiff']): # 判断新文件夹是否存在,不存在则创建 if not os.path.exists(new_path): os.makedirs(new_path) # 原文件夹所有的文件 old_file_list = os.listdir(old_path) # 遍历所有的文件 for num,file_name in enumerate(old_file_list): # 跳过非图片文件 去掉下面两行判断条件,则会把所有文件都重命名 if os.path.splitext(file_name)[1][1:] not in ext: # 获取文件扩展名 continue # 重命名文件 new_file_name = f"{prefix}_{str(num)}{os.path.splitext(file_name)[1]}" # 构建旧文件和新文件的完整路径 old_file_path = os.path.join(old_path, file_name) new_file_path = os.path.join(new_path, new_file_name) # 移动文件 shutil.copy(old_file_path, new_file_path) print(f"{file_name} -> {new_file_name}") ### 下面调用函数并传入参数选择路径和文件名前缀 # 源文件夹路径 old_path = 'new_images' # 新文件夹路径 new_path = 'im2' # 文件名前缀 prefix = 'heiheihttp://www.chinasem.cn' # 调用批量重命名函数 rename_files(old_path, new_path, prefix)
效果
GUI界面源码
import os # 文件管理模块 import shutil # 文件复制模块 from tkinter import filedialog,messagebox,Label,Entry # 消息框模块,文件选择对话框模块,标签模块,输入框模块 import tkinter as tk # GUI模块 # 定义图片文件批量重命名函数 def rename_files(old_path, new_path,prefix,ext=['jpg','png','jpeg','gif','bmp','tif','tiff']): # 判断新文件夹是否存在,不存在则创建 if not os.path.exists(new_path): os.makedirs(new_path) # 原文件夹所有的文件 old_file_list = os.listdir(old_path) # 遍历所有的文件 for num,file_name in enumerate(old_file_list): # 跳过非图片文件 去掉下面两行判断条件,则会把所有文件都重命名 if os.path.splitejavascriptxt(file_name)[1][1:] not in ext: # 获取文件扩展名 continue # 重命名文件 new_file_name = f"{prefix}_{str(num)}{os.path.splitext(file_name)[1]}" # 构建旧文件和新文件的完整路径 old_file_path = os.path.join(old_path, file_name) new_file_path = os.path.join(new_path, new_file_name) # 移动文件 shutil.copy(old_file_path, new_file_path) print(f"{file_name} -> {new_file_name}") def rename_images_gui(): # 弹出对话框让用户选择文件夹 old_path = filedialog.askdirectory() if not old_path: return new_path = filedialog.askdirectory(title="选择新文件夹") if not new_path: return # 获取输入框中的值 prefix = entry_prefix.get() if not prefix: messagebox.showerror("提示", "请输入文件名前缀") return # 如果没有前缀,返回 rename_files(old_path, new_path, prefix) messagebox.showinfo("提示", "批量重命名完成") def on_rename_button_click(): # 获取输入框中的值 old_path = entry_old_path.get() new_path = entry_new_path.get() try: # 获取将输入框中的值 prefix = entry_prefix.get() except ValueError: # 如果输入框中的值不符合格式要求,则弹出错误提示框并返回 messagebox.showerror("提示", "输入格式不符合要求") return # 检查输入框中的路径是否有效 if not os.path.isdir(old_path): # 如果输入框中的路径不是有效目录,则弹出错误提示框并返回 messagebox.showerror("提示", "路径无效") return # 调用图片调整函数 rename_files(old_path, new_path, prefix) # 弹出成功提示框 messagebox.showinfo("Success", "图片批量命名成功") # 创建主窗口 root = tk.Tk() # 设置窗口标题 root.title("图片批量命名工具") # 创建并放置标签和输入框 tk.Label(root, text="储存原图片的文件夹:").grid(row=0, column=0, padx=10, pady=10) # 创建输入框并放置 entry_old_path = tk.Entry(root, width=50) # 设置输入框的位置 entry_old_path.grid(row=0, column=1, padx=10, pady=10) # 设置按钮点击事件,选择文件夹并将路径插入输入框,如果输入框已有内容,则先清空,再插入,否则直接插入,使用lambda表达式简化代码, tk.Button(root, text="浏览", command=lambda: entry_old_path.delete(0, tk.END) or entry_old_path.insert(0, filedialog.askdirectory())).grid( row=0, column=2, padx=1php0, pady=10) # 创建并放置标签和输入框 tk.Label(root, text="储存新图片的文件夹:").grid(row=1, column=0, padx=10, pady=10) # 创建输入框并放置 entry_new_path = tk.Entry(root, width=50) # 设置输入框的位置 entry_new_path.grid(row=1, column=1, padx=10, pady=10) # 设置按钮点击事件,选择文件夹并将路径插入输入框,如果输入框已有内容,则先清空,再插入,否则直接插入,使用lambda表达式简化代码, tk.Button(root, text="浏览", command=lambda: entry_new_path.delete(0, tk.END) or entry_new_path.insert(0, filedialog.askdirectory())).grid( row=1, column=2, padx=10, pady=10) # 创建并放置标签和输入框 tk.Label(root, text="文件前缀").grid(row=3, column=0, padx=10, pady=10) # 创建输入框并放置 entry_pandroidrefix = tk.Entry(root, width=10) # 设置输入框的位置 entry_prefix.grid(row=3, column=1, padx=10, pady=10) # 创建并放置调整尺寸按钮 rename_button = tk.Button(root, text="运行", command=on_rename_button_click) # 设置按钮的位置 rename_button.grid(row=4, column=0, columnspan=3, pady=20) # 运行主循环 root.mainloop()
效果
打包成.exe可执行文件
需要安装python第三方库pyinstaller
pip install pyinstaller
在文件所在目录的终端输入下面的命令,就可以把把刚刚的GUI界面打包成一个.exe可执行文件。
pyinsataller filename
filename是要打包的源文件的名称 比如我要打包我写的图片批量命名的脚本打包成.exe可执行文件,可以在终端使用下面的命令:
pyinstaller study_2.py
效果
.exe可执行文件运行出来的结果和GUI界面是一致的
到此这篇关于Python脚本编程实现图片文件批量命名的文章就介绍到这了,更多相关Python图片批量命名内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!
这篇关于Python脚本实现图片文件批量命名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!