用Python调用CMD命令 批量转换Webp到Png

背景

写了个小爬虫,爬了一堆图片回来,全都是webp格式的。
可我还在用着上古时代的AcdSee 3.2,一张张图片都拖到浏览器里去看也显得太傻了。
虽然我瘾大,可是人菜。
看了半天别的玩家写的各种奇奇怪怪的攻略,高人可以用powershell一句话搞定,我当然也知道powershell很好很强大,奈何我怎么改来改去在我的计算机上都跑不通。
最后只好还是求助我刚学会没几天的Python。

准备工作

这webp的始作俑者当然是Google,它家也提供一个软件包用来折腾webp的文件。
地址在此: https://developers.google.com/speed/webp
解压下来之后的文件里面跟FFMpeg很像,直接去bin文件夹看看就好。
看了一下随文件自带的说明,里面讲了几个参数,大致是这样的:

 > dwebp -h
 Usage: dwebp in_file [options] [-o out_file]

有了这个dwebp.exe文件,就可以开工了

实操

进入VS Code写代码

import os # 首先调用os模块
# 接着指定webp图片所在所有文件夹的目录
rootdir = r'D:\RMT\TRY\vmg'
# 通过os模块的os.walk()函数来遍历这个文件夹和其下所有的子文件夹里面的内容
for (folder,_,filenames) in os.walk(rootdir):
# 通过循环,来得到文件夹里面的路径
    for n in filenames:
    	# 得到类似D:\RMT\TRY\vmg\鲜花和浪漫都给你\2021030910104769.webp这样的源文件完整地址
        input_file = folder + "\\" + n 
        # 得到类似D:\RMT\TRY\vmg\鲜花和浪漫都给你\2021030910104769.png这样的目标文件的完整地址
        output_file = input_file.split(".")[0] + '.png'
        # 指定google的webp文件解码器的路径
        bin_file = r'F:\Lab\libwebp-1.2.0-windows-x64\libwebp-1.2.0-windows-x64\\bin\dwebp' 
        # 通过python3的高版本引入的f格式来简化字符串的拼接,而且显得很直观。
        # 这里的-mt是dwebp中的参数,意为调用多线程,如果你的图片不大,可以省略
        command = f'{bin_file} "{input_file}" -mt -o "{output_file}"'
        # 到了这一步,得到的命令将类似于:
        # F:\Lab\libwebp-1.2.0-windows-x64\libwebp-1.2.0-windows-x64\bin\dwebp "D:\RMT\TRY\vmg\鲜花和浪漫都给你\2021030910104769.webp" "D:\RMT\TRY\vmg\鲜花和浪漫都给你\2021030910104769.png"
        # 最后调用os模块来执行cmd命令
        os.system(command)

哎,时代的车轮滚滚,像我这样用着拼音加加,抱着windows 7和AcdSee 3.2不肯撒手的人,可能注定该留在历史的垃圾堆里了吧……

上一篇:把调试好的SQL语句转换为JAVA代码小工具


下一篇:前端性能优化之图片优化