在之前批量修改文件名的时候出现的问题是使用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]表示以 .进行分隔取.前面的内容。
运行结果: