かなり扱いにくいbashスクリプトをPythonに移植することを検討していますが、次の側面を処理する方法に固執しています。スクリプトのポイントは、動的にフェッチされたデータに応じてpng画像を生成することです。bashスクリプトはデータを取得し、convert
多くのオプションを備えた非常に長いユーティリティの呼び出しを構築します。Pythonのテンプレート文字列は良い解決策のように見えましたが(共有ホスティングにデプロイするので、標準ライブラリ内にとどまるほうがはるかに好きです)、bashのように式を評価できないことがわかりました。
>>> from string import Template
>>> s = Template('The width times one is ${width}')
>>> s.substitute(width=45)
'The width times one is 45'
>>> t = Template('The width times two is ${width*2}')
>>> t.substitute(width=45)
# Raises ValueError
私のbashスクリプトはそのような算術にかなり依存しているので(そうでなければ、追跡する変数の数は指数関数的に増加します)、Pythonでこの動作をエミュレートする方法があるかどうか知りたいです。私は、ほぼ同じ質問をしているこの質問にコメントがあり、次のように読んでいるのを見ました。
直感に反するため、これは非常に非Python的です。文字列は単なる文字列であり、コードを実行するべきではありません。
この場合、この問題に取り組むためのより慣用的な方法は何でしょうか。上にリンクされた質問に対する提案された答えは、%
構文またはformat()
関数のいずれかで文字列フォーマットを使用することですが、それは私の文字列内の変数の数(約50)ではうまく機能しないと思います。