根据列表批量重命名文件 - 简单的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,表示该串字符不转义,否则会找不到目录的。

 好,就这样。

posted @ 2018-09-15 23:11  放飞oo  阅读(1855)  评论(0)    收藏  举报