python之怎样去批量修改文件名呢

描述

1. 批量修改文件名

例子: 把b站下载的长文件名替换为短的

'''
说明: 去掉文件名中共同的部分
'''
import os


# 修改文件
def rename(data_dir: str, is_loop: bool, old: str, new: str):
fileList = os.listdir(data_dir)
for file_name in fileList:
full_file_name = os.path.join(data_dir, file_name)
# 遍历所有文件夹中的文件
if os.path.isdir(full_file_name):
if is_loop:
rename(full_file_name, is_loop, old, new)
else:
continue
new_name = file_name.replace(old, new, -1)
full_new_name = os.path.join(data_dir, new_name)
if full_file_name == full_new_name:
continue
print(full_file_name)
print(f'替换 {full_new_name}')
os.rename(full_file_name, full_new_name)
pass

# 最外层的文件夹
data_path = r'2021年最新爬虫+反爬+js逆向(配套完整项目)_'
old = ''
new = ''
rename(data_path, True, old, new)

2. 网盘分享通过:

替换: 网盘会审核文件名, 所以,干脆所有文件名都只用数字表示,顺便给自己网站打一波广告

0400 第402章 决胜的关键.m4a => 0400{discuz.elandcloud.com}.m4a

import os
import re


def rename(data_dir: str, ptn: re.Pattern, new_repl: str, is_loop: bool):
fileList = os.listdir(data_dir)
for file_name in fileList:
full_file_name = os.path.join(data_dir, file_name)
# 遍历所有文件夹中的文件
if os.path.isdir(full_file_name):
if is_loop:
rename(full_file_name, ptn, is_loop)
else:
continue
new_name = ptn.sub(new_repl, file_name)
full_new_name = os.path.join(data_dir, new_name)
os.rename(full_file_name, full_new_name)
pass


data_path = r'D:\1.source\pythonpath\xmly-paid\data\琅琊榜'
ptn = re.compile(r'(\d+).*?(\.m4a)')
# 选择要保留的组,\g<1>表示第1组(就是前面的数字),\g<2>表示第2组(就是.m4a)
new_repl = r'\g<1>{discuz.elandcloud.com}\g<2>'
rename(data_path, ptn, new_repl, True)



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分