问题标签 [subcommand]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - CommandDotNet 的子命令不起作用,尽管我在 C# 中使用 [SubCommand] 属性对其进行了修饰
我正在使用“CommandDotNet”在 CLI 工具中创建命令。而且我也添加了[SubCommand]
属性但是“set”命令或其子命令“workdir”不起作用。以前添加的子命令工作正常。可能是什么问题呢?
CLITool.cs
配置.cs
python - Python Click - 传递配置文件以提供子命令和选项
我正在尝试构建一个 Click MultiCommand 组,以便能够从命令行和配置文件中提供选项、子命令和子命令选项的组合。
已经有一些从配置文件中驱动 Click 的示例:
https://github.com/click-contrib/click-configfile
https://github.com/psf/black/blob/37861b4ce264f16754f4459d19522a05844daf9f/src/black/__init__ .py#L99
Python Click - 从配置文件中提供参数和选项
这些对我来说很有意义,我可以按照下面的示例从 JSON 文件中实现读取选项(基于 Black 的执行方式)。这些示例实现的共同点是它们通过急切的回调函数覆盖默认选项值来工作(因此这些默认值是在解析命令行的其余部分之前设置的)。因此,如果同时提供了配置文件和命令行选项,则将使用命令行选项。这很好,但要真正让 Click 调用任何子命令,它们必须从命令行提供(但可能有纯粹的配置驱动选项)。
我还想指定从传入的配置文件(以及选项)中运行哪些子命令,但无法确定执行此操作的最佳方法。我曾尝试在修改args
属性的同时修改 Click 上下文属性default_map
,但这只是在解析命令行参数(未传递子命令)时被 Clicks 默认行为覆盖并args
返回到空列表。
我的目标是使这些调用等效:
完全指定命令行
python commandline.py --opt_a "Test Opt A" sub_cmd_a --sub_opt_a "Test SubOpt A"
指定的完整配置文件
python commandline.py --config "config_file.json"
config_file.json 在哪里
感谢任何关于能够将子命令参数注入 Click 的指针。谢谢。
python - 当子命令具有不同的参数时,如何使用子解析器创建带有 argparse 的子命令?
这里有类似的解决方案,但它们要么处理更旧版本的 python,要么只处理解析器而不处理子解析器。我正在编写一个带有简单命令行界面的程序。我希望脚本有子命令。最终结果将如下所示:
或者:
等等
看起来这样做的方法是使用子解析。我已经阅读了关于 subparsing 的 python3 文档并相应地对我的脚本进行了建模,但我遇到了错误。似乎我的一些子命令有参数而其他子命令没有。这是我尝试过的:
出现问题的行是“args.func(args)”行。如果我在括号中包含 args,则不带参数的函数将不起作用。如果我不包含 args,显然接受单个参数的函数不起作用。
当我在 args.fun 括号中有“args”时调用 login 时的个别错误是:
如果我删除 args 并尝试调用 translate,我会得到: TypeError: transfer() missing 1 required positional argument: 'args'
最后,如果我不包含这样的子命令:$ main.py
我得到: AttributeError: 'Namespace' object has no attribute 'func' 理想情况下,我希望它像 --help 一样显示用法
任何见解都会有所帮助。同样,argparse 本身有很多文档,但是我一直很难找到像我正在做的那样使用子解析器的东西。如果有更好的方法来执行子命令,我会全力以赴。