python按顺序批量修改文件名

在之前批量修改文件名的时候出现的问题是使用os.listdir出现乱序,即修改文件名的时候不按照文件排列的顺序,导致了不必要的麻烦。
os.listdir排列的顺序是按照例如:1,10,11,2,20,21…的顺序
想达到的正常顺序:1,2,3,4,5…
解决代码如下:

import os

#设定文件路径
path='C:/Users/Louise喵/Desktop/FOV60/'
#获取该目录下所有文件,存入列表中
fileList=os.listdir(path)
#get_key是sorted函数用来比较的元素,该处用lambda表达式替代函数。
get_key = lambda i : int(i.split('.')[0])
new_sort = sorted(fileList, key=get_key)
#print(fileList, '\n', new_sort)
n = 0

for i in fileList:
    # 设置旧文件名(就是路径+文件名)
    oldname = path + os.sep + new_sort[n]  # os.sep添加系统分隔符

    # 设置新文件名
    newname = path + os.sep + 'p' + str(n + 1)+'.csv'

    os.rename(oldname, newname)  # 用os模块中的rename方法对文件改名

    print(oldname, '   ======>  ', newname)

    n += 1

其中排序的关键语句为:

get_key = lambda i : int(i.split('.')[0])
new_sort = sorted(fileList, key=get_key)

split()是一个常用的分隔字符的方法,split(‘.’)[0]表示以 .进行分隔取.前面的内容。

运行结果:
在这里插入图片描述
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值