使用python对文件名进行批量修改(二)2020-06-08---删除指定字符串

本文接上一篇使用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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。