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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    HighTec-Eclipse for Tricore 的安装方法
    http升级https遇到的问题
    symfony中模板生成路径两种方式
    http请求在https中使用
    git tag标签
    Git查看两个版本之间修改了哪些文件
    mysql将语句写入表中
    使用fiddler抓包模拟器及配置fiddler过滤
    Mixed Content: The page at 'xxx' was loaded over HTTPS, but requested an insecure resource 'xxx'.
    nginx 禁止某IP访问
  • 原文地址:https://www.cnblogs.com/zhangyafei/p/14389050.html
Copyright © 2011-2022 走看看