本文接上一篇使用python对文件名进行批量修改2020-04-24待续内容,主要介绍如何删除文件名前缀及后缀,方法为基于lstrip()和partition()函数的实现。
1. 问题描述
现实问题
某些形如”www.cn-ki.net_基于大数据的xxx构建方法.pdf”(1) 和 "基于大数据的xxx构建方法_张三.pdf“ 、"xxx问题研究_李四.pdf“ (2)的文档不便于管理和检索。故此,本文的目标是去除文件名中的冗余部分。
需解决的核心问题:
(1)删除文件名前缀; 如“ www.cn-ki.net_”。
(2)删除指定字符之后的内容;如”_张三“、“_李四”、”_Mike“等。
2.所需函数说明
(1)删除前缀函数str.lstrip()
s = ''aabb_This is a file."
s.lstrip(‘aabb_’)
将字符串s中的’aabb_‘删除,运行结果如图:
This is a file.
(2)删除指定字符之后内容,使用函数 str.partition()
s = ''This is a file_aabb"
head,sep,tail = str.partition('_')
print(head)
将字符串s中的’_aabb‘删除,运行结果如图:
This is a file
3.总体解决方案
示例1:删除文件名前缀
# 导入os模块
import os
# 获取文件路径
path = 'C:\\myProject\\test'
# 设置工作路径
os.chdir(path)
# 读取文件名
filelist = os.listdir(path)
# 修改文件名
for fname in filelist:
pre = 'www.cn-ki.net_' #设置所要删除的前缀
new_fname = fname.lstrip(pre) #删除
os.rename(fname, new_fname) # 重命名
示例2:删除文件名中的部分指定字段
# 导入os模块
import os
# 获取文件路径
path = 'C:\\myProject\\test'
# 设置工作路径
os.chdir(path)
# 读取文件名
filelist = os.listdir(path)
# 修改文件名
for fname in filelist:
head,sep,tail = fname.partition('_') #删除以下划线_开头的部分
os.rename(fname,head+ '.pdf')
说明
os.rename(fname,head+ '.pdf')
此处记得是head + '.pdf'
,原因
①fname.partition('') 分割的结果为:
head=基于大数据的xxx构建方法
,
sep=_
tail =张三.pdf
②无法具体指定下划线后面所带字符,比如"filename1张三.pdf","filename2_李四.pdf",只能确定要删除部分的起始规律。
4.本文运行环境说明
Python 3.6.4