根据列表批量重命名文件 - 简单的python脚本
背景:我有一批文件(图1),想要重命名为自己想要的样子(图2)。并且要使用python实现。
来自博客园(放飞oo)
已知原文件名字也是按照章节顺序排列的。我已经准备好的文件名字的list.txt,内容如(图3):

方法:
话不多说,上python代码以及注释:
1 #-*- coding:utf-8 -*- 2 import os 3 import linecache 4 # 计数器,记录处理次数,以便取得对应行数的文件名 5 count = 0 6 # 使用getlines读取文件所有内容,按行生成列表。若使用getline需要一个linenum参数,标识取的具体行数。 7 list = linecache.getlines(r'E:\pythonshell\list.txt') 8 # 遍历目录下的文件夹 9 for (root, dirs, files) in os.walk(r"E:\pythonshell\target"): 10 # 因为该目录下只有文件,所以外层for循环只执行一次(放飞oo) 11 root = os.path.join(root) 12 # getlines会将该目录下的所有文件名生成一个列表,下面迭代并使用这个文件名 13 for filename in files: 14 name1 = os.path.join(filename) 15 name2 = list[count].replace("\n", ".m4a") 16 file1 = os.path.join(root,name1) 17 file2 = os.path.join(root,name2) 18 count += 1 19 os.rename(file1,file2) 20 print("handleding the {0}".format(file2))
执行结果是没什么问题的。

但调试过程中有几个问题要说:
1、list.txt的编码格式问题。
报错SyntaxError: invalid or missing encoding declaration for 'E:\\pythonshell\\list.txt',原因是linecache默认读取的文件编码格式为UTF-8,我使用的Edit Plus 将list.txt转换为UTF-8解决。
2、win下面的目录是斜杠‘\’分割的,这样需要在表示路径的字符串前面加上r,表示该串字符不转义,否则会找不到目录的。
好,就这样。

浙公网安备 33010602011771号