JPG转PDF的Nautilus脚本(使用ImageMagick)

3
在搜索无果后,我决定编写自己的脚本来将选定的JPEG文件转换为一个PDF文件。
以下是代码(使用Python编写):
#!/usr/bin/env python
import os

n = " ".join(os.environ["NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"].splitlines())

os.system("convert " + n + " out.pdf")

这个脚本的问题在于,如果你想转换的文件在一个名字带空格的目录中(比如说 /home/myuser/My Photos/1/),它就不能正常工作了。
我能否有什么办法解决这个问题呢?
1个回答

4
n = " ".join("'%s'" % f for f in os.environ["NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"].splitlines())

请记得对文件名进行清洗,否则恶意构造的文件名可能会在我们的机器上执行代码。

更好的方法是使用 subprocess 模块而不是 os.system()

subprocess.call ([ "convert" ] + os.environ["NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"].splitlines() + [ "out.pdf" ])

嗨!代码完美地运行了,谢谢!只有几个问题:你能解释一下你的代码具体是做什么的吗?以及我该如何使用subprocess.call?我尝试过subprocess.call(["convert",n,"out.pdf"]),但由于某些原因它没有工作。 - Reick
Reick:它在文件名周围加上引号,这样即使它们包含空格,shell也会将它们视为单个参数。 - InternetSeriousBusiness

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接