3

成功せずに検索した後、選択したJPEGファイルを1つの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/)。

これを修正する方法はありますか?

4

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" ])
于 2012-09-03T17:03:55.333 に答える