zoukankan      html  css  js  c++  java
  • Python常用功能函数系列总结(七)

    本节目录

    常用函数一:批量文件重命名

    常用函数一:批量文件重命名

    # -*- coding: utf-8 -*-
    
    """
    DateTime   : 2021/02/08 10:29
    Author     : ZhangYafei
    Description: 批量文件重命名
    """
    
    import os
    
    
    def rename(path, prefix: str = None, suffix: str = None, replace: dict = None, append: bool = False, remove: bool = False, file_type: bool = False):
        origin_path = path
        dir_path, path = os.path.split(path)
        path, file_type_suffix = path.rsplit('.', maxsplit=1) if file_type else (path, None)
        if append:
            if prefix:
                path = f'{prefix}{path}'
            if suffix:
                path = f'{path}{suffix}'
            if replace:
                for key, val in replace:
                    path = path.replace(key, val)
        elif remove:
            if prefix and path.startswith(prefix):
                path = path[len(prefix):]
            if suffix:
                path = path[:-len(suffix)]
            if replace:
                for key, val in replace:
                    path = path.replace(key, val)
        elif replace:
            for key in replace:
                path = path.replace(key, replace[key])
        if file_type:
            path = f'{path}.{file_type_suffix}'
        if dir_path:
            path = os.path.join(dir_path, path)
        os.rename(origin_path, path)
        print(f'{origin_path} rename to {path} success.')
    
    
    def batch_file_rename(dir_path: str, only_file: bool = False, only_dir: bool = False, prefix: str = None, suffix: str = None, replace: dict = None, append: bool = False, remove: bool = False, file_type: bool =False):
        """
        批量文件重命名
        :param dir_path: 文件夹名称
        :param only_file: 是否仅修改文件
        :param only_dir: 是否仅修改文件夹
        :param prefix: 前缀
        :param suffix: 后缀
        :param replace: 替换
        :param append: 插入
        :param remove: 删除
        :param file_type: 文件类型
        :return:
        """
        if not any([append, remove, replace]):
            raise Exception('append OR remove OR replace at least one is not None.')
        if only_file:
            for base_path, folders, files in os.walk(dir_path):
                for file in files:
                    file_path = os.path.join(base_path, file)
                    rename(file_path, prefix=prefix, suffix=suffix, replace=replace, append=append, remove=remove, file_type=file_type)
        elif only_dir:
            for base_path, folders, files in os.walk(dir_path):
                for folder in folders:
                    folder_path = os.path.join(base_path, folder)
                    rename(folder_path, prefix=prefix, suffix=suffix, replace=replace, append=append, remove=remove, file_type=file_type)
        else:
            for base_path, folders, files in os.walk(dir_path):
                for folder in folders:
                    folder_path = os.path.join(base_path, folder)
                    rename(folder_path, prefix=prefix, suffix=suffix, replace=replace, append=append, remove=remove, file_type=file_type)
                for file in files:
                    file_path = os.path.join(base_path, file)
                    rename(file_path, prefix=prefix, suffix=suffix, replace=replace, append=append, remove=remove, file_type=file_type)
    
    
    if __name__ == '__main__':
        # batch_file_rename('data', suffix='[张亚飞出品]', append=True, file_type=True)
        # batch_file_rename('data', replace={'[张亚飞出品]': ''})
        # batch_file_rename('data', prefix='[张亚飞]', append=True)
        batch_file_rename('data', prefix='[张亚飞]', remove=True)
    

      运行结果

     

     

    作者:张亚飞
    出处:https://www.cnblogs.com/zhangyafei
    gitee:https://gitee.com/zhangyafeii
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    init进程解析rc文件的相关函数分析
    Ubuntu 安装Android Studio与使用手册
    Vim的撤销与重做
    Vim 配色设置与配色脚本语法
    js常用的语句
    xshell常用的命令
    java常用的语句
    maven工程配置日志
    根据一个oss的pdf文件的 地址转换成一个File文件
    根据一个oss的地址把图片转换成一个文件
  • 原文地址:https://www.cnblogs.com/zhangyafei/p/14389050.html
Copyright © 2011-2022 走看看