[在设计CLI时,如何表明需要FILE(通过stdin或通过参数)]]

问题描述 投票:0回答:1

最好是举个例子。

我希望我的CLI能够同时运行,如何在帮助文档中正确传达此信息?

Usage:
  my-cli import FILE
  my-cli import [FILE] (in case where stdin is used only)

例如

my-cli import test.xlsx

my-cli import < test.xlsx

在第二种情况下,未传递FILE标志(因此,要求FILE会在我当前的实现中导致错误)。

放松约束使系统按预期工作,除了现在可以不传入文件并且不可以通过stdin传入。

有关更多上下文,我正在使用Django Management CLI(语法紧跟argparse)。这是一些代码,显示FILE场景在哪里(可选)。

    def add_arguments(self, parser):
        subparsers = parser.add_subparsers(
            title='commands', dest='command', help='command help')
        subparsers.required = True

        parser_import = subparsers.add_parser('import', help='import help')

        parser_import.add_argument('FILE', nargs='?', type=argparse.FileType('r'), default=sys.stdin)

nargs='?'参数使帮助看起来像:

usage: manage.py my-cli import [-h] [FILE]

positional arguments:
  FILE

optional arguments:
  -h, --help  show this help message and exit

我正在寻找的是以某种方式调整我的代码,以使生成的./manage.py my-cli import --help显示更多理智的东西。另外,不通过标准输入传递任何东西或不传递文件都会引发错误。

最好是举一个例子。我希望CLI能够同时运行,如何在帮助文档中正确传达此信息?用法:my-cli import FILE my-cli import [FILE](如果stdin ...

python command-line-interface argparse manage.py
1个回答
0
投票
  • 简单胜于复杂
© www.soinside.com 2019 - 2024. All rights reserved.