python查找文件并重命名_使用python对文件名进行批量修改2020-04-24

1. 问题描述

所需要实现的修改的种类

修改的方式:指增、删、更。

修改的内容:包括对前缀(或后缀)、特定字段。

2.解决思路

step1:实现单个文件名的修改

如何增加前/后缀,如何插入特定字段;

如何删除前/后缀,如何插入特定字段;

如何更换前/后缀,如何插入特定字段。

step2实现批量操作

3.寻找所需函数及方法

根据1.2确定的解决思路,寻找相应的功能函数。

(1)读取文件名的函数

os模块,os.listdir()

(2)文件名修改的函数

①修改文件名函数:os.rename()

②建立修改规则的函数:translate()方法进行转换,并须通过str.maketrans()建立转换规则表。

(3)批量修改用循环语句

for循环

4.相关函数用法解析

(1) translate()用法说明

用途:S.translate(transtab) -> str

将S中的字符按照一定的规则转换为str。 其中,转换规则由转换表transtab来给出。

语法

S.translate (transtab)

参数说明

transtab -- 转换规则表,需要借助maketrans()方法(详见下一条)。

(2)str.maketrans()用法说明

用途:返回一个可用于str.translate()的转换表。

语法

str.maketrans (arg1[,arg2[,arg3])

参数说明

如果只有一个参数,那么它必须是一个将Unicode序数(整数)或字符映射到Unicode序数、字符串或None的字典。字符键将被转换为序数。

如果有两个参数,它们必须是长度相等的字符串,在得到的字典中,arg1中的每个字符将映射到arg2中相同位置的字符。

如果有第三个参数,arg3必须是一个字符串,其字符将在结果中映射为None,即删除arg3所指定字体串中的字符。

(3)示例1:对给定字符串进行修改

#建立转换规则表

intab = "abc"

outtab = "123"

transtab = str.maketrans(intab,outtab)

#进行转换

sentence = "This is a test string!"

print(sentence.translate(transtab))

输出结果将sentence中的’a‘替换为了’1‘,如图

This is 1 test string!

(4)os.rename()用法说明

用途:重命名文件或目录。

语法

os.rename(old_fname,new_fname)

参数说明

old_fname---原文件名。

new_fname---修改后的新文件名。

(5)示例2:对指定文件夹中文件加前缀

# 导入os模块

import os

# 获取文件路径

path = 'C:\\myProject\\test'

# 设置工作路径

os.chdir(path)

# 读取文件名

filelist = os.listdir(path)

# 修改文件名

for fname in filelist:

os.rename(fname, '[pre]'+fname) # 加前缀

5.总体解决方案

实现对任意指定文件夹中的文件,进行任意所需要的重命名。

示例3:对指定文件夹中文件进行重命名

# 导入os模块

import os

# 获取文件路径

path = 'C:\\myProject\\test'

# 设置工作路径

os.chdir(path)

# 读取文件名

filelist = os.listdir(path)

# 建立重命名规则

transtab = str.maketrans('','','[pre]') #此规则为,删除文件名中所含有的[pre]

# 修改文件名

for fname in filelist:

os.rename(fname, fname.translate(transtab)) # 加前缀

说明

transtab = str.maketrans('','','[pre]')

此规则为,删除文件名中所含有的各个单独字符,更确切的方式应当使用正则表达式。

有关正则表达式,且听下回分解。

6.本文运行环境说明

Python 3.6.4

注意:python 2 中 translate()函数使用方法略有不同。

7.主要参考资料

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值