elupload获取文件名与路径_Python实现文件名整理工具

需要实现的功能:文件整理工具

具体需求:

1. 文件名批量修改

2. 批量将指定目录下的子目录中的文件,移动到指定目录,并添加将子目录的名字添加到文件名中

(这些需求也可以通过批处理实现)

所需技术(可用作搜索关键词):

1. 读取指定目录下的文件列表、修改文件名

推荐教程:https://www.cnblogs.com/Handsome-Lan/p/10702294.html

2. 获取指定目录下的所有子目录和文件名

推荐教程:https://www.cnblogs.com/bigtreei/p/9316369.html

3. 正则表达式(在替换文件名时使用)

推荐教程:https://www.cnblogs.com/zery/p/3438845.html

应用场景:

1. 整理下载的资源

2. 文件归档


实现思路

根据需求,我们发现可以通过如下方式实现:

需求1:循环遍历指定目录(文件夹)下的所有文件,使用正则表达式或字符串替换文件名,实现文件名的批量修改

需求2:循环遍历指定目录(文件夹)及其子目录下的所有文件,替换文件所在路径使文件移动到根目录下,并将文件所在子目录名称填写到文件名中,实现子目录文件整理


实现代码

import osimport redef filename_rename(path: str, pattern: str, repl: str): """ 文件名批量修改(可以依据正则表达式修改目录及其子目录下所有文件的文件名) :param path:  需要修改文件名的文件目录 :param pattern:  需要被替换内容的正则表达式 :param repl:  需要将正则表达式匹配的内容替换为的内容 """ for root, dirs, files in os.walk(path): # 循环遍历指定目录及其所有子目录 for file in files: # 遍历当前目录(子目录)下的所有文件 old_name = root + "" + file # 当前文件名(修改前的文件名) new_name = re.sub(pattern, repl, old_name) # 使用正则表达式修改文件名 # new_name = old_name.replace(pattern,repl) # 也可以直接使用字符串替换修改文件名 os.rename(old_name, new_name) # 修改文件名 print("修改文件名:", old_name, "→", new_name)def filename_collation(path: str): """ 批量将指定目录下的子目录中的文件,移动到指定目录,并添加将子目录的名字添加到文件名中(不删除子目录) :param path:  需要整理的文件夹路径 """ for root, dirs, files in os.walk(path): # 循环遍历指定目录及其所有子目录 if root != path: # 只处理指定目录的子目录,不处理指定目录的根目录 for file in files: # 遍历当前目录(子目录)下的所有文件 old_name = root + "" + file # 当前文件名(修改前的文件名) new_name = path + "" + root.replace(path + "", "").replace("", "_") + "_" + file # 生成新的文件名 os.rename(old_name, new_name) # 修改文件所在路径及文件名 print("修改文件名:", old_name, "→", new_name)if __name__ == "__main__": # 批量修改文件名 filename_rename("G:电视剧The Gifted", ".中英字幕.WEBRip.AAC.720p.x264-人人影视", "") # 清除文件名中多余部分 filename_rename("G:电视剧The Gifted", ".The.Gifted.", "") # 清除文件名中多余部分 # 整理子目录中文件 filename_collation("G:研究报告")

运行结果:

d4545648959f78bb621f06d76a202dd1.png

作者:长行 (Python系列教程:C001)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值