如何将Click命令的epilog从外部文件读取并实现多行格式化?
将Click命令的Epilog内容存入单独文件并支持多行显示的实现方法
完全可行,具体实现步骤如下:
1. 创建独立的Epilog文件
在脚本同级目录下创建project.epilog文件,内容保留原Epilog中的\b标记(Click通过\b识别需要保留的换行格式,避免自动折叠),示例内容:
\b Commands: action Available values are : check, create, delete, get, index, list, restore, write part Available values are : template, data, backup item Available values are : level, folder, record, group, variable \b Available situations and parameters: - activate (Activate a project version) (T) : (no parameter) ...
2. 读取文件内容并传入Click命令
在Python脚本中读取该文件的内容,直接赋值给click.command()的epilog参数即可。为了避免路径问题,建议通过脚本所在目录拼接文件路径,确保运行时能正确找到文件:
import os import click # 获取脚本所在目录,构建epilog文件的绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) epilog_file_path = os.path.join(script_dir, 'project.epilog') # 读取epilog内容 with open(epilog_file_path, 'r', encoding='utf-8') as f: epilog_content = f.read() @click.command(epilog=epilog_content) @click.argument('action', metavar='action', type=click.Choice(['activate', 'check', 'create', 'copy', 'delete', 'get', 'index', 'list', 'restore', 'write'])) @click.argument('part', metavar='part', type=click.Choice(['backup', 'data', 'template', 'version']), required=False) @click.argument('item', metavar='item', type=click.Choice(['level', 'folder', 'record', 'group', 'variable']), required=False) def project(action, part, item): # 业务逻辑代码 pass if __name__ == '__main__': project()
原理说明
Click的epilog参数接受任意字符串,读取文件后传入的内容会被原样解析,原有的\b标记依然生效——Click会识别这些标记,保留文本中的换行和缩进格式,实现和直接写在代码中一样的显示效果。
内容的提问来源于stack exchange,提问作者fragadass
相关产品推荐
相关产品推荐

