Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我们是否应该使用选项来获取非可选信息,但这样做是为了让信息看起来更直观?_Python_Command Line Interface_Argparse - Fatal编程技术网

Python 我们是否应该使用选项来获取非可选信息,但这样做是为了让信息看起来更直观?

Python 我们是否应该使用选项来获取非可选信息,但这样做是为了让信息看起来更直观?,python,command-line-interface,argparse,Python,Command Line Interface,Argparse,我正在尝试编写一个python程序,该程序将在cli中提供一些github功能,如创建问题、创建repo、创建PRs等 我想出了类似的办法 github创建问题--标题--描述--用户--回购 为此,我使用了argparse import argparse parser = argparse.parser() parser.add_argument('create', options=['issue', 'repo', 'pull')

我正在尝试编写一个python程序,该程序将在cli中提供一些github功能,如创建问题、创建repo、创建PRs等

我想出了类似的办法
github创建问题--标题--描述--用户--回购

为此,我使用了argparse

import argparse
parser = argparse.parser()
parser.add_argument('create', 
                    options=['issue', 'repo', 'pull')
                    action='store')
parser.add_argument('--title', action="store", type=str)
parser.add_argument('--description', action="store", type=str)
parser.add_argument('--user', action="store")
parser.add_argument('--repo')

parser.parse_args('create issue --title title --description desc --user user --repo repo')
我使用选项
--title
--descriptions
以关键字形式获取信息

虽然选项是可选的,但根据我的分析风格:

  • 如果
    创建
    发行
    则需要
    --标题
    --说明
    --用户
    --回购

解析命令
github create issue--title title--description desc--user user--repo repo
的正确方法是什么

首先有几个调整:

parser.add_argument('--title', action="store", type=str)
可以简化为

parser.add_argument('--title')
因为此操作和类型是默认值。您可以使用
--repo
执行此操作

args = parser.parse_args()
从命令行读取并将值放入
args
命名空间中

args = parser.parse_args(['issue --title title --description desc --user user --repo repo'].split())
可以使用模拟的字符串列表来测试此解析器

请注意,我删除了
create

parser.add_argument('create', choices=['issue', 'repo', 'pull'))
定义将放入
args
位置
作为
args。创建
。它接受的字符串是
选项
(而不是
选项
)。另一种方法是使用
——创建
;在这种情况下,它的行为与其他参数类似,只是接受的值有一个限制

如果您想为特定值要求一些参数,则需要在解析后进行测试,例如

if args.create in ['issue']:
    if args.title is None or args.user is None:
       parser.error('title and user required with issue')
这几乎是最近的一个副本,该副本也作为副本关闭

另一种方法是使用
子parser
。但是您可以阅读文档和前面的[argparse]问题中的内容

尝试这些想法,然后回答一个新问题


您必须编写一个自定义的
用法
和/或
帮助
段落来描述对用户的限制。

首先有几个调整:

parser.add_argument('--title', action="store", type=str)
可以简化为

parser.add_argument('--title')
因为此操作和类型是默认值。您可以使用
--repo
执行此操作

args = parser.parse_args()
从命令行读取并将值放入
args
命名空间中

args = parser.parse_args(['issue --title title --description desc --user user --repo repo'].split())
可以使用模拟的字符串列表来测试此解析器

请注意,我删除了
create

parser.add_argument('create', choices=['issue', 'repo', 'pull'))
定义将放入
args
位置
作为
args。创建
。它接受的字符串是
选项
(而不是
选项
)。另一种方法是使用
——创建
;在这种情况下,它的行为与其他参数类似,只是接受的值有一个限制

如果您想为特定值要求一些参数,则需要在解析后进行测试,例如

if args.create in ['issue']:
    if args.title is None or args.user is None:
       parser.error('title and user required with issue')
这几乎是最近的一个副本,该副本也作为副本关闭

另一种方法是使用
子parser
。但是您可以阅读文档和前面的[argparse]问题中的内容

尝试这些想法,然后回答一个新问题

您必须编写自定义的
用法
和/或
帮助
段落来向用户描述约束