[python]为指定目录下的文件名批量加前缀
前言
功能描述:批量重命名指定目录下的文件,文件名加前缀,默认格式为“目录名_原文件名”。
示例代码
import argparse
import os
import sys
import logging
def gen_args():
"""
说明
-----
解析命令行参数
"""
parser = argparse.ArgumentParser(prog="批量文件重命名工具", description="批量重命名目录中的文件名, 新文件名为'目录名_文件名'")
parser.add_argument("-d", "--dir", type=str, required=True, help="必填, 待处理目录名")
parser.add_argument("-p", "--prefix", type=str, help="可选, 待修改文件名的前缀, 默认同目录名")
parser.add_argument("-r", "--replace", action="store_true", help="修改文件名, 默认不修改")
parser.add_argument("-v", "--version", action="version", version="批量文件重命名工具, version 1.2", help="打印版本信息")
args = parser.parse_args()
return args
def batchRename(directory_name: str, prefix: str, isReplace: bool = False):
"""
说明
-----
重命名文件
参数
-----
directory_name: str
待批量重命名文件的目录
prefix: str
文件重命名的前缀
isReplace: bool
是否对文件进行重命名, 默认不修改, 避免重命名后的文件名不符合要求
"""
if not os.path.exists(directory_name):
logging.critical(f"目录 {directory_name} 不存在")
sys.exit(1)
for file in os.listdir(directory_name):
# 如果前缀和目录名一致, 则中间建一个下划线
if directory_name == prefix:
new_filename = f"{prefix}_{file}"
else:
new_filename = f"{prefix}{file}"
logging.info(f"新文件名: {os.path.join(directory_name,new_filename)}")
if isReplace:
os.rename(os.path.join(directory_name,file),os.path.join(directory_name,new_filename))
# 提示信息
if isReplace:
logging.info("文件重命名完成")
else:
logging.warning("未指定 '-r', 文件名将不修改")
if __name__ == "__main__":
# 自定义日志配置
logFormat = f"[%(asctime)s] [%(levelname)s] %(filename)s[line:%(lineno)d] %(message)s"
logging.basicConfig(level=logging.INFO, format=logFormat, datefmt="%Y-%m-%d %H:%M:%S")
args = gen_args()
directory_name = args.dir
# 如果未手动指定前缀, 修改后的文件名前将加上目录名作为前缀
if args.prefix is None:
prefix = directory_name
else:
prefix = args.prefix
batchRename(directory_name, prefix, args.replace)
pyinstaller打包
自己用的话可以直接运行python脚本,如果给别人用,一般借助pyinstaller打包成二进制可执行文件。代码中用到的也都是标准库,创建一个虚拟环境后pip装个pyinstaller就行了。
# 打包示例。结果文件在dist目录
pyinstaller -F batch_rename.py --clean
使用效果
本文来自博客园,作者:花酒锄作田,转载请注明原文链接:https://www.cnblogs.com/XY-Heruo/p/16628062.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示