Tag: argparse

目录pathtypes与argparse

我的Python脚本需要从命令行传递的目录中读取文件。 我已经定义了一个如下所示的readable_dirtypes,用于argparse来validation在命令行上传递的目录是否存在并且可读。 此外,还为目录参数指定了默认值(下例中的/ tmp / non_existent_dir)。 这里的问题是,即使在命令行中显式传入目录参数的情况下,argparse也会调用默认值的readable_dir()。 这会导致脚本出错,因为默认path/ tmp / non_existent_dir不存在于通过命令行显式传入目录的上下文中。 我可以通过不指定默认值并强制使用此参数来解决此问题,也可以在稍后的脚本中推迟validation,但这是任何人都知道的更优雅的解决scheme? #!/usr/bin/python import argparse import os def readable_dir(prospective_dir): if not os.path.isdir(prospective_dir): raise Exception("readable_dir:{0} is not a valid path".format(prospective_dir)) if os.access(prospective_dir, os.R_OK): return prospective_dir else: raise Exception("readable_dir:{0} is not a readable dir".format(prospective_dir)) parser = argparse.ArgumentParser(description='test', fromfile_prefix_chars="@") parser.add_argument('-l', '–launch_directory', type=readable_dir, default='/tmp/non_existent_dir') args = parser.parse_args()

Python argparse:大量的select导致丑陋的帮助输出

我有这个我普遍喜欢的代码: import argparse servers = [ "ApaServer", "BananServer", "GulServer", "SolServer", "RymdServer", "SkeppServer", "HavsServer", "PiratServer", "SvartServer", "NattServer", "SovServer" ] parser = argparse.ArgumentParser(description="A program to update components on servers.") group = parser.add_mutually_exclusive_group() group.add_argument('-l', '–list', dest="update", action='store_false', default=False, help='list server components') group.add_argument('-u', '–updatepom', dest="update", action='store_true', help='update server components') parser.add_argument('-o', '–only', nargs='*', choices=servers, help='Space separated list of case sensitive […]

Python argparse – 将参数添加到多个子分析器

我的脚本定义了一个主分析器和多个子分析器。 我想将-p参数应用于一些子分析器。 到目前为止,代码如下所示: parser = argparse.ArgumentParser(prog="myProg") subparsers = parser.add_subparsers(title="actions") parser.add_argument("-v", "–verbose", action="store_true", dest="VERBOSE", help="run in verbose mode") parser_create = subparsers.add_parser ("create", help = "create the orbix environment") parser_create.add_argument ("-p", type = int, required = True, help = "set db parameter") # Update parser_update = subparsers.add_parser ("update", help = "update the orbix environment") parser_update.add_argument ("-p", type […]

检查是否设置了argparse可选参数

我想检查一个可选的argparse参数是否已经被用户设置。 我可以安全使用isset检查吗? 像这样的东西: if(isset(args.myArg)): #do something else: #do something else 这对float / int / stringtypes的参数是否一样? 我可以设置一个默认参数,并检查它(例如,设置myArg = -1,或“”为一个string,或“NOT_SET”)。 但是,我最终想要使用的值只能在脚本中稍后计算。 所以我会将它设置为-1作为默认值,然后将其更新为其他值。 与简单地检查用户是否设置值相比,这看起来有点笨拙。

我怎么能在Python 2.6中获得argparse?

我有一些使用argparse模块编写的Python 2.7代码。 现在我需要在Python 2.6机器上运行它,因为在2.7中添加了argparse,所以无法运行。 无论如何,我可以在2.6中获得argparse吗? 我想避免重写代码,因为我会经常在机器之间传输这种代码。 升级python不是一个选项。 我应该澄清,理想的解决scheme将是不需要模块安装的东西。

如何使用python argparseparsing多个子命令?

我正在实施一个命令行程序,其界面如下所示: cmd [GLOBAL_OPTIONS] {command [COMMAND_OPTS]} [{command [COMMAND_OPTS]} …] 我已经通过了argparse文档 。 我可以使用argparse add_argument实现GLOBAL_OPTIONS作为可选参数。 和{command [COMMAND_OPTS]}使用子命令 。 从文档看来,我只能有一个子命令。 但正如你所看到的,我必须实现一个或多个子命令。 parsing使用argparse命令行参数的最佳方法是什么?

Python中的可选标准input与argparse

我发现非常有用的语法 parser.add_argument('-i', '–input-file', type=argparse.FileType('r'), default='-') 用于指定一个input文件或使用stdin,这两个我都想在我的程序中使用。 但是,input文件并不总是必需的。 如果我不使用-i或redirectinput $ someprog | my_python_prog $ my_python_prog < inputfile 我不希望我的Python程序等待input。 我希望它只是移动并使用默认值。

Argparse:如果存在“x”,则需要参数“y”

我有一个要求如下: ./xyifier –prox –lport lport –rport rport 对于参数prox,我使用action ='store_true'来检查它是否存在。 我不需要任何的论据。 但是,如果设置了–prox,我需要 rport和lport。 有没有写一个简单的方法与argparse编写自定义条件编码。 更多代码: non_int.add_argument('–prox', action='store_true', help='Flag to turn on proxy') non_int.add_argument('–lport', type=int, help='Listen Port.') non_int.add_argument('–rport', type=int, help='Proxy port.')

指定input参数argparse python的格式

我有一个python脚本,需要一些命令行input,我使用argparse来parsing它们。 我发现文档有点混乱,找不到在input参数中检查格式的方法。 这个示例脚本解释了我的意思是检查格式: parser.add_argument('-s', "–startdate", help="The Start Date – format YYYY-MM-DD ", required=True) parser.add_argument('-e', "–enddate", help="The End Date format YYYY-MM-DD (Inclusive)", required=True) parser.add_argument('-a', "–accountid", type=int, help='Account ID for the account for which data is required (Default: 570)') parser.add_argument('-o', "–outputpath", help='Directory where output needs to be stored (Default: ' + os.path.dirname(os.path.abspath(__file__))) 我需要检查选项-s和-e用户input的格式是YYYY-MM-DD 。 在argparse中是否有一个选项,我不知道这是否完成了这个。

如何使python argparse不带前缀的互斥组参数?

Python2.7 argparse只接受互斥组中的可选参数(前缀): parser = argparse.ArgumentParser(prog='mydaemon') action = parser.add_mutually_exclusive_group(required=True) action.add_argument('–start', action='store_true', help='Starts %(prog)s daemon') action.add_argument('–stop', action='store_true', help='Stops %(prog)s daemon') action.add_argument('–restart', action='store_true', help='Restarts %(prog)s daemon') $ mydaemon -h usage: mydaemon [-h] (–start | –stop | –restart) optional arguments: -h, –help show this help message and exit –start Starts mydaemon daemon –stop Stops mydaemon daemon –restart Restarts mydaemon […]