python批量修改文件名

在平时的开发中,设计师在做设计稿的时候往往都是按照iphone的模板来做的,所以在切图的时候也不例外,她们给的切图是这样子的

@2x,@3x是什么鬼,一问才知道这是为了做屏幕适配的一种文件命名方式,可以在Android资源文件的命名是不支持存在@字符的,所以我们得把所有的文件进行重命名,文件少点还行,多了就太累了,所以有没有办法可以快速对这些文件进行重命名呢?当然了,python就适合干这事

关于python的安装什么在这里就不说了,大就可以去看廖雪峰写的python教程,讲的很详细

我们看了上面的文件就知道,我们只需要把文件名中的@3x去掉就可以了,所以代码实现的思路也是这样,直接贴代码

rename_res.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/python
# coding=utf-8
import os
import sys
path = sys.path[0] #sys.path[0]为当前文件夹的路径
filelist=os.listdir(path) #该文件夹下所有的文件(包括文件夹)
for files in filelist: #遍历所有文件
oldpath=os.path.join(path,files) #原来的文件路径
if os.path.isdir(oldpath):
continue
filename=os.path.splitext(files)[0] #文件名
filetype=os.path.splitext(files)[1] #文件扩展名
if filename.find('@3x')>=0: #如果文件名中含有@3x
newpath=os.path.join(path,filename.split('@3x')[0]+filetype);
#取@3x前面的字符,若需要取后面的字符则使用filename.split('@3x')[1]
if not os.path.isfile(newpath)
os.rename(oldpath,newpath)
print newpath,'ok'

将python文件拷贝到要进行重命名的文件下,执行python rename_res.py就可以完成文件的批量修改了

有时候我们不想每次拷贝*rename_res.py*到相应文件夹里,我们也可以通过将相应文件夹动态的传递进来,改起来也很简单,只需要将path的获取方法改动一下,如下

path=sys.argv[1] #sys.argv[1]为我们执行python时传递的第二个参数

最后执行python rename_res.py /Users/loody/Downloads/切图/3x即可