如何在Python中正确执行Vertopal的GIF转APNG转换命令
解决Python调用Vertopal CLI转换带空格文件名的问题
问题原因
你的错误是因为文件名funny cat.gif包含空格,直接将完整命令作为字符串传给subprocess.call()时,Python会按空格拆分参数,导致cat.gif被识别为独立的无效参数,从而触发报错。
解决方案
有两种可靠的解决方式:
1. 使用参数列表传递(推荐)
将命令拆分为独立的参数列表,每个部分作为列表的一个元素,这样空格不会被错误拆分:
import subprocess discord_sticker_converter = subprocess.call(["vertopal", "convert", "funny cat.gif", "--to", "apng"]) print(discord_sticker_converter)
2. 启用shell并给文件名加引号
如果需要使用字符串形式的命令,可以启用shell=True,同时给带空格的文件名加上单引号或双引号,确保shell正确识别完整文件名:
import subprocess discord_sticker_converter = subprocess.call("vertopal convert 'funny cat.gif' --to apng", shell=True) print(discord_sticker_converter)
注意:使用
shell=True时,如果文件名来自不可信的外部输入,可能存在安全风险,因此优先推荐第一种方法。
内容的提问来源于stack exchange,提问作者FireStarter
相关产品推荐
相关产品推荐

