我正在考慮將一個相當笨重的bash腳本移植到python,但我堅持如何處理以下方面:該腳本的目的是根據動態獲取的數據生成一個png圖像。 bash腳本抓取數據,並構建了很長時間的convert
實用程序調用,並提供了很多選項。這似乎是python的模板字符串將是一個很好的解決方案(我非常喜歡留在標準庫,因爲我將部署到共享主機),但我發現,你不能評估表達式,你可以在bash中:eval模板字符串
>>> 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腳本相當嚴重依賴於這樣的運算(變量,否則數量來跟蹤會呈指數級增長),我想知道是否有仿效蟒蛇此行爲的方式。我看到this question,要求大致相同,有一個評論,閱讀:
這將是非常unPythonic,因爲這是違反直覺 - 字符串只是 字符串,它們不應該運行的代碼!
如果是這種情況,那麼處理此問題的更習慣的方法是什麼? 上面鏈接的問題的建議答案是使用%
語法或format()
函數的字符串格式,但我認爲這對於我的字符串中的變量數量(大約50)沒有效果。
我不認爲引用是OP的問題。至少,在任何地方都沒有提到 –
@NiklasB。引用不是問題,但僅僅是因爲我還沒有翻譯成python :)我認爲這是一個比使用模板庫更好的解決方案,因爲它不需要外部代碼,並避免了顯式構建巨大串。 – mszep
@mszep:足夠公平,我可能誤解了這個問題然後;) –