python对多个文件统一重命名删除名中部分字符
**
因为有的时候网上找到的压缩包解压后的文件很乱,文件名太长,多了很多不需要的字,不方便查看,
出于想快捷删除文件名中部分字的简单需求,很久前编写了以下程序,今天简单记录一下。
——2022-8-15
1. 最初的需求:
只是要删除多个文件中的指定的某组字
import os
import re
path = r'C:\Users\jellyfish\Downloads\train\考研英语一'
files = os.listdir(path)
i = 0
for file in files:
pattern = '考研英语'
oldname = path + '\\' + files[i]
newname = path +'\\' +files[i].replace(pattern,'')
os.rename(oldname,newname)
i += 1
结果:
2. 第二次的需求:
用正则匹配删去一些不是统一拥有的某组字。
有些文件中有01、02这些排序,但我不需要。
pattern =re.compile('\w+、')
for file in files:
oldname = path + '\\' + file
rename = re.sub(pattern,"",file)
newname = path + '\\' + rename
os.rename(oldname,newname)
#简便点
for file in files:
newname = re.sub(pattern,"",file)
os.rename(os.path.join(path,file),os.path.join(path,newname))
print("————————END————————————")
结果:
题外话
运用正则匹配的时候,一开始想的是
for file in files:
oldname = path + '\\' + file
pattern =re.compile('\w+、')
text = re.findall('\w+、',oldname)
newname = path + '\\' + file.replace(text,'')
os.rename(oldname,newname)
问题除了繁琐外还有findall返回的是list类型,而replace要str
以及,强制将text转换为str时是['03、’],而我需要的是’03、’。list转换为str不强行转换,用"".join()
详细可见
https://www.cnblogs.com/sench/p/8718008.html#:~:text=python%E4%B8%ADlist%E5%92%8Cstr%E4%BA%92%E8%BD%AC%201%E3%80%81list%E8%BD%ACstr%20%E5%81%87%E8%AE%BE%E6%9C%89%E4%B8%80%E4%B8%AA%E5%90%8D%E4%B8%BAtest_list%E7%9A%84list%EF%BC%8C%E8%BD%AC%E6%8D%A2%E5%90%8E%E7%9A%84str%E5%90%8D%E4%B8%BAtest_str%20%E5%88%99%E8%BD%AC%E6%8D%A2%E6%96%B9%E6%B3%95%EF%BC%9A%20test_str%20%3D%20%22%22.join%20%28test_list%29,2%E3%80%81str%E8%BD%AClist%20%E5%81%87%E8%AE%BE%E6%9C%89%E4%B8%80%E4%B8%AA%E5%90%8D%E4%B8%BAtest_str%E7%9A%84str%EF%BC%8C%E8%BD%AC%E6%8D%A2%E5%90%8E%E7%9A%84list%E5%90%8D%E4%B8%BAtest_list%20%E5%88%99%E8%BD%AC%E6%8D%A2%E6%96%B9%E6%B3%95%EF%BC%9A%20test_list%3Dlist%20%28test_str%29%20%E4%BE%8B%E5%AD%90%EF%BC%9A%20%E6%9C%AC%E7%AB%99%E4%BD%BF%E7%94%A8%E3%80%8CCC%20BY-NC-SA%E3%80%8D%E5%88%9B%E4%BD%9C%E5%85%B1%E4%BA%AB%E5%8D%8F%E8%AE%AE%EF%BC%8C%E8%BD%AC%E8%BD%BD%E8%AF%B7%E5%9C%A8%E6%96%87%E7%AB%A0%E6%98%8E%E6%98%BE%E4%BD%8D%E7%BD%AE%E6%B3%A8%E6%98%8E%E4%BD%9C%E8%80%85%E5%8F%8A%E5%87%BA%E5%A4%84%E3%80%82