本节目录

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

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

# -*- 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)

  运行结果

最新文章

  1. 一台电脑安装多个版本的jdk
  2. [资料分享]尚硅谷JavaWeb
  3. 用TPP开启TDD的easy模式
  4. 分享一个web存储方法
  5. java8 中的时间和数据的变化
  6. Vmvare下Ubuntu安装Python3.4
  7. LeetCode Pow(x, n) (水题)
  8. 编写postgresql函数执行循环copy命令导入大数据
  9. arm_cm4.c关于kinetis的修改
  10. #if...#endif的用法总结
  11. org.hibernate.LazyInitializationException
  12. VIM的高级使用
  13. CefSharp中实现Chrome中jS导出Excel
  14. YII 主题
  15. Oracle 性能优化 — 统计数据收集[Z]
  16. MSP430与ATK-NEO-6M GPS模块
  17. javascript 生成页面轮播元素
  18. 使用Windows2003创建FTP服务器 - 进阶者系列 - 学习者系列文章
  19. Java集合框架(五)—— Map、HashMap、Hashtable、Properties、SortedMap、TreeMap、WeakHashMap、IdentityHashMap、EnumMap
  20. logstash 切分tomcat日志

热门文章

  1. Webpack学习篇
  2. 一个超简单的Microsoft Edge Extension
  3. STL 较详尽总结
  4. BIT 常态化在线CTF系统 pwn题目
  5. 区块链开发学习第七章:第一个Dapp-猜拳游戏
  6. CF1090M The Pleasant Walk 题解
  7. LuoguP7505 「Wdsr-2.5」小小的埴轮兵团 题解
  8. LuoguP7375 [COCI2018-2019#5] Jarvis 题解
  9. SQL获取当天0点0分0秒和23点59分59秒方法
  10. 分布式文件系统fastdfs安装以及python调用