2017-05-30 47 views
2

我定義我的程序的命令行界面​​,我想,這樣通過收尾的一些例子。默認情況下,​​模塊剝去額外的空格,包裝描述文本等。這個默認行爲對於程序描述和參數組描述非常有用,但對於epilog,我想提供一個預格式化的字符串,解析器不應該修改。如果我指定formatter_class=RawDescriptionHelpFormatter,這會給出epilog所需的行爲,但我失去了我依賴的程序和參數組描述的默認行爲。我可以回去手動修復這些描述的包裝,但這很枯燥。只是收尾應用原始格式,而不是解析器和參數組說明

有沒有辦法將原始格式化只有到epilog?

回答

0

此格式改變一個方法,_fill_text

class RawDescriptionHelpFormatter(HelpFormatter): 
    .... 
    def _fill_text(self, text, width, indent): 
     return ''.join(indent + line for line in text.splitlines(keepends=True)) 

此處理包裝爲公司在format_help方法定義爲text什麼

def format_help(self): 
    formatter = self._get_formatter() 

    # usage 
    formatter.add_usage(self.usage, self._actions, 
         self._mutually_exclusive_groups) 

    # description 
    formatter.add_text(self.description) 

    # positionals, optionals and user-defined groups 
    for action_group in self._action_groups: 
     formatter.start_section(action_group.title) 
     formatter.add_text(action_group.description) 
     formatter.add_arguments(action_group._group_actions) 
     formatter.end_section() 

    # epilog 
    formatter.add_text(self.epilog) 

    # determine help from format above 
    return formatter.format_help() 

也就是說,descriptiongroup.descriptionepilog

我能想象創造一個替代格式化子類,只能改變結尾處理(也許一些關鍵字標識)的包裝。但是我會把它作爲讀者的練習。 :)

相關問題