You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 21:44:49