python如何按顺序批量修改文件名
作者:Louise喵
这篇文章主要介绍了python如何按顺序批量修改文件名问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
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]表示以 .进行分隔取.前面的内容。
运行结果:
python批量按顺序递增修改文件名代码(可指定文件名)
如需在文件名添加其它相应字符,修改代码相应字符部分即可,此方法比较简单,容易理解。
import os # 设置要重命名的文件夹路径 folder_path = 'C:/Users/Administrator/Desktop/CR/RGB三通道' # 获取文件夹中所有文件名 file_names = os.listdir(folder_path) # 设置起始编号 start_num = 1 # 遍历文件名列表并修改文件名 for file_name in file_names: # 获取文件名的后缀 file_extension = os.path.splitext(file_name)[1] # 构造新的文件名 new_file_name = str(start_num) + file_extension #也可在此处添加相应的字符,有区别重命名文件 #new_file_name = "相应字符"+str(start_num) + file_extension # 构造旧文件的路径和新文件的路径 old_file_path = os.path.join(folder_path, file_name) new_file_path = os.path.join(folder_path, new_file_name) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'{file_name}已重命名为{new_file_name}') # 递增编号 start_num += 1
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。