本文接上一篇使用python對文件名進(jìn)行批量修改2020-04-24待續(xù)內(nèi)容,主要介紹如何刪除文件名前綴及后綴,方法為基于lstrip()和partition()函數(shù)的實現(xiàn)。
1. 問題描述
現(xiàn)實問題
某些形如”www.cn-ki.net_基于大數(shù)據(jù)的xxx構(gòu)建方法.pdf”(1) 和 "基于大數(shù)據(jù)的xxx構(gòu)建方法_張三.pdf“ 、"xxx問題研究_李四.pdf“ (2)的文檔不便于管理和檢索。故此,本文的目標(biāo)是去除文件名中的冗余部分。
需解決的核心問題:
(1)刪除文件名前綴; 如“ www.cn-ki.net_”。
(2)刪除指定字符之后的內(nèi)容;如”_張三“、“_李四”、”_Mike“等。
2.所需函數(shù)說明
(1)刪除前綴函數(shù)str.lstrip()
s = ''aabb_This is a file."
s.lstrip(‘a(chǎn)abb_’)
將字符串s中的’aabb_‘刪除,運(yùn)行結(jié)果如圖:
This is a file.
(2)刪除指定字符之后內(nèi)容,使用函數(shù) str.partition()
s = ''This is a file_aabb"
head,sep,tail = str.partition('_')
print(head)
將字符串s中的’_aabb‘刪除,運(yùn)行結(jié)果如圖:
This is a file
3.總體解決方案
示例1:刪除文件名前綴
# 導(dǎo)入os模塊
import os
# 獲取文件路徑
path = 'C:\\myProject\\test'
# 設(shè)置工作路徑
os.chdir(path)
# 讀取文件名
filelist = os.listdir(path)
# 修改文件名
for fname in filelist:
pre = 'www.cn-ki.net_' #設(shè)置所要刪除的前綴
new_fname = fname.lstrip(pre) #刪除
os.rename(fname, new_fname) # 重命名
示例2:刪除文件名中的部分指定字段
# 導(dǎo)入os模塊
import os
# 獲取文件路徑
path = 'C:\\myProject\\test'
# 設(shè)置工作路徑
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('') 分割的結(jié)果為:
head=基于大數(shù)據(jù)的xxx構(gòu)建方法
,
sep=_
tail =張三.pdf
②無法具體指定下劃線后面所帶字符,比如"filename1張三.pdf","filename2_李四.pdf",只能確定要刪除部分的起始規(guī)律。
4.本文運(yùn)行環(huán)境說明
Python 3.6.4