我正在編寫一個基於外部文件生成另一個python腳本的python腳本。我的代碼的一小部分可以在下面看到。我沒有接觸過這類腳本的很多例子,所以我想知道最佳實踐是什麼。Python中文本生成的最佳實踐
正如代碼示例的最後兩行所示,我使用的技術有時可能很笨重。
SIG_DICT_NAME = "sig_dict"
SIG_LEN_KEYWORD = "len"
SIG_BUS_IND_KEYWORD = "ind"
SIG_EP_ADDR_KEYWORD = "ep_addr"
KEYWORD_DEC = "{} = \"{}\""
SIG_LEN_KEYWORD_DEC = KEYWORD_DEC.format(SIG_LEN_KEYWORD, SIG_LEN_KEYWORD)
SIG_BUS_IND_KEYWORD_DEC = KEYWORD_DEC.format(SIG_BUS_IND_KEYWORD,
SIG_BUS_IND_KEYWORD)
SIG_EP_ADDR_KEYWORD_DEC = KEYWORD_DEC.format(SIG_EP_ADDR_KEYWORD,
SIG_EP_ADDR_KEYWORD)
SIG_DICT_DEC = "{} = dict()"
SIG_DICT_BODY_LINE = "{}[{}.{}] = {{{}:{}, {}:{}, {}:{}}}"
#line1 = SIG_DICT_DEC.format(SIG_DICT_NAME)
#line2 = SIG_DICT_BODY.format(SIG_DICT_NAME, x, y, z...)
我很好奇 - 要做什麼,你試圖解決什麼問題,也就是說,你試圖生成的代碼是什麼? – 2015-02-07 18:32:09
最好的做法是使用更多結構化的不太神奇的方法,例如[函數,類,'hasattr' /'getattr',metaclasses](https://github.com/lihaoyi/macropy#levels-of-magic)* *您考慮文本生成。 – jfs 2015-02-07 18:41:45
@HughBothwell外部文件是一些數據信號的列表,這些數字信號存在於特定索引的某些總線上。該文件遵守一些約束條件(如最大索引或最大總線地址),但是信號的名稱,它們的總線和它們的索引可能會改變。 我希望能夠生成可以解析外部文件的Python,並創建一個將信號名稱映射到其屬性(總線,索引,以及其他任何東西)的字典,併爲每個信號寫入函數來設置或讀取信號。 – jwp36 2015-02-07 18:41:47