[python]为指定目录下的文件名批量加前缀

简介: [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

使用效果

相关文章
|
7月前
|
移动开发 自然语言处理 Linux
Python中r前缀:原始字符串的魔法解析
本文深入解析Python中字符串的r前缀(原始字符串)的设计原理与应用场景。首先分析传统字符串转义机制的局限性,如“反斜杠地狱”问题;接着阐述原始字符串的工作机制,包括语法定义、与三引号结合的用法及特殊场景处理。文章重点探讨其在正则表达式、文件路径和多语言文本处理中的核心应用,并分享动态构建、混合模式编程等进阶技巧。同时纠正常见误区,展望未来改进方向,帮助开发者更好地理解和使用这一特性,提升代码可读性和维护性。
416 0
|
4月前
|
数据采集 监控 算法
Python文件与目录比较全攻略:从基础操作到性能优化
文件比较的核心在于数据指纹校验,通过逐字节比对生成唯一标识,确保内容一致性。从标准库的os与filecmp到高性能第三方库如pydiffx,再到分布式与量子加密技术的未来趋势,文件比较广泛应用于数据备份、代码审查与系统监控等领域,是保障数据完整性的关键技术手段。
107 0
|
Python
用python转移小文件到指定目录并压缩,脚本封装
这篇文章介绍了如何使用Python脚本将大量小文件转移到指定目录,并在达到大约250MB时进行压缩。
163 2
|
10月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
489 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
Python
Python实用记录(四):os模块-去后缀或者改后缀/指定目录下图片或者子目录图片写入txt/csv
本文介绍了如何使用Python的os模块来操作文件,包括更改文件后缀、分割文件路径和后缀、将指定目录下的所有图片写入txt文档,以及将指定目录下所有子目录中的图片写入csv文档,并为每个子目录分配一个标签。
190 1
|
编解码 UED Python
Python批量修改指定目录下图片的大小名文章
Python批量修改指定目录下图片的大小名文章
136 1
Python获取二级目录的第二文件名
Python获取二级目录的第二文件名
Python将目录分割成数组
Python将目录分割成数组
python编程获取续蜀山剑侠传:从目录名称、网址到内容
python编程获取续蜀山剑侠传:从目录名称、网址到内容
python编程获取《续蜀山剑侠传》目录信息:目录名称和网址
python编程获取《续蜀山剑侠传》目录信息:目录名称和网址

推荐镜像

更多