需求来源
- 从某多买来了一些资料(1t),自己用时发现文件和文件名命名让人很难受。于是开始手动干它,后来发现实在是太蠢,果断掏出遗忘已久的脚本小王子python
需要的预备知识
- 绝对路径和相对路径
- 字符串的替换方法(replace)
- pathlib库,主要用到Path类
- 函数的递归调用
let’s 开干
from pathlib import Path
def file_rename(replaced_word='',new_word='',fp=None):
'''
批量修改文件或文件夹名称,只需给出主目录,会扫描主目录下的所有文件及文件夹
:params
:replaced_word 被替换的原始字符串
:new_word 新的字符串
:fp 主文件路径
'''
if not replaced_word or not new_word:
raise TypeError('请确认输入了被替换字符串和替换字符串')
if not fp:
raise TypeError('参数错误,缺失参数fp:文件路径')
fp = Path(fp) if isinstance(fp,str) else fp
dirs = [x.__str__().replace('\\','/') for x in fp.iterdir()] if fp.is_dir() else []
total = 0
for path in dirs:
if replaced_word in path:
new_nanme = path.replace(replaced_word,new_word)
new_fp = fp / new_nanme
target = fp / path
target.rename(new_fp)
total += 1
print(f'success: old:{path} new:{new_fp}')
print(f'rename nums:{total}')
if Path(new_fp).is_dir():
file_rename(replaced_word,new_word,fp=new_fp)
else:
file_rename(replaced_word,new_word,Path(path))
if __name__ == '__main__':
fp = Path(r'E:\online project\')
replaced_word = '素材'
new_word = '叫我小勇好了'
file_rename(replaced_word=replaced_word,new_word=new_word,fp=fp)
就这样吧,开箱即用,有什么不足在补充,目前测试2000+文件用时5s左右,还是很嗨的。
peace && love
|