python 批量更换图片格式脚本
问题:将某文件下的所有jpg的图片更换为png的图片
简单的实现:
# -*- coding:utf-8 -*- from os.path import splitext import glob from PIL import Image def get_all_file(filename): files = glob.glob(filename) return files def to_ather_file(files, type): for jpg in files: im = Image.open(jpg) png = splitext(jpg)[0]+"." + type im.save(png) print png if __name__ == "__main__": filename = "./image/*.[Jj][Pp][Gg]" files = get_all_file(filename) to_ather_file(files, "png")
这是一种很简单的是实现方法,就是先用glob获得某路径下的所有文件,该文件下都是jpg图片(题目是给定的,也可以考虑存在其他图片的情况的处理方式,就是获得文件的后缀名,判断是否为jpg),然后依次读入图片,使用splitext获得文件名和后缀名,然后按照要求重组文件名并保存就好了。
这里介绍两个部分:
glob模块:
在python中,glob模块是用来查找匹配的文件的 在查找的条件中,需要用到Unix shell中的匹配规则:
* : 匹配所所有
? : 匹配一个字符
*.* : 匹配如:[hello.txt,cat.xls,xxx234s.doc]
?.* : 匹配如:[1.txt,h.py]
?.gif: 匹配如:[x.gif,2.gif]
可以参考:fnmatch 如果没有匹配的,glob.glob(path)将返回一个空的list:[]
也就说:glob是用来寻找文件的。某种命名规则的文件的。
import glob def get_all(): '''获取目录[c:\\tmp]下面所有的文件''' return glob.glob('c:\\tmp\\*.*') def get_my_file(): '''获取目录[c:\\tmp]下面文件名为4个字符的文件''' return glob.glob('c:\\tmp\\????.txt') def get_batch_file(): '''获取目录[c:\\tmp]下面扩展名为\'.txt\'的文件''' return glob.glob('c:\\tmp\\*.txt') def main(): print('获取目录[c:\\tmp]下面所有的文件:') tem_files = get_all() print(tem_files) print('获取目录[c:\\tmp]下面文件名为4个字符的文件:') tem_files = get_my_file() print(tem_files) print('获取目录[c:\\tmp]下面扩展名为\'.txt\'的文件:') tem_files = get_batch_file() print(tem_files) if __name__ == '__main__': main()
python文件操作:
有关文件夹与文件的查找,删除等功能 在 os 模块中实现。使用时需先导入这个模块,
导入的方法是:
import os
1、将一个路径名分解为目录名和文件名两部分
fpath , fname = os.path.split( "你要分解的路径")
例如:
a, b = os.path.split( "c:\\123\\456\\test.txt" )
print a
print b
显示:
c:\123\456
test.txt
2、 分解文件名的扩展名
fpathandname , fext = os.path.splitext( "你要分解的路径")
例如:
a, b = os.path.splitext( "c:\\123\\456\\test.txt" )
print a
print b
显示:
c:\123\456\test
.txt
文件操作还有很多有用的函数,可以通过查找手册来看。