似乎在不指定nargs的情况下使用store的默认操作似乎总是更有意义,因此输出始终如预期,而不是有时是list有时不是。我只是好奇我是否错过了什么..例子>>>importargparse>>>parser=argparse.ArgumentParser()>>>parser.add_argument('--foo')_StoreAction(option_strings=['--foo'],dest='foo',nargs=None,const=None,default=None,type=None,choices=None,help=None,metavar=None)>>>pa
假设我有一个脚本可以处理一个文件。它在命令行上使用此文件的名称,但如果未提供,则默认为已知文件名(例如content.txt)。对于python的argparse,我使用以下内容:parser=argparse.ArgumentParser(description='myillustrativeexample')parser.add_argument('--content',metavar='file',default='content.txt',type=argparse.FileType('r'),help='filetoprocess(defaultstocontent.txt)
运行Python2.7执行时:$pythonclient.pyget_emails-a"åäö"我得到:usage:client.pyget_emails[-h][-aAREA][-t{rfc2822,plain}]client.pyget_emails:error:argument-a/--area:invalidunicodevalue:'\xc3\xa5\xc3\xa4\xc3\xb6'这是我的解析器:def_argparse():desc="""SimpleCLI-clientfor..."""argparser=argparse.ArgumentParser(descript
在argparse包中,metavar参数修改程序显示的帮助信息。下面的程序不是为了工作,它只是用来演示metavar参数的行为。importargparseif__name__=='__main__':parser=argparse.ArgumentParser(description="Printarange.")parser.add_argument("-range1",nargs=3,type=int,help="Specifyrangewith:start,stop,step.",metavar=("start","stop","step"))parser.add_argum
当我从命令行运行脚本时,我一直在寻找将参数值添加到脚本的方法。我发现似乎可以执行此操作的两个软件包是sys.argv和argparse。如果可能的话,我还希望能够添加某种帮助功能。有人可以解释一下两者之间的区别吗?也许对于刚开始的人来说,什么会更容易? 最佳答案 sys.argv只是命令行参数的列表。argparse是一个功能齐全的命令行解析器,它通常解析sys.argv并以更易于使用的方式返回数据。如果您正在做比接受一些必需的位置参数的脚本更复杂的事情,您将需要使用解析器。根据您的python版本,python标准库中有3个可用(
我正在使用argparse来解析命令行参数。在浏览argparse的文档时我只能看到使用不同程序名称的规定。我希望能够使用默认程序名称而不必导入sys。据我所知,argparse中没有任何内容会返回程序名称。importargparseparser=argparse.ArgumentParser()args=parser.parse_args()print(dir(args))这是输出:['__class__','__contains__','__delattr__','__dict__','__dir__','__doc__','__eq__','__format__','__ge_
foo是一个目录嵌套很深的Python项目,在各个子目录下包含了约30个unittest文件。在foo的setup.py中,我有addedacustom"test"command内部运行python-munittestdiscoverfoo'*test.py'请注意,这使用了unittest'sdiscovery模式。由于一些测试非常慢,我最近决定测试应该有“级别”。thisquestion的答案很好地解释了如何让unittest和argparse很好地协同工作。所以现在,我可以运行一个个人单元测试文件,例如foo/bar/_bar_test.py,pythonfoo/bar/_bar
如果我使用这些选项调用下面的脚本:--useru1--passwordp1--foof1--useru2--useru3--passwordp3然后它会打印:Namespace(foo=['bar','f1'],password=['p1','p3'],user=['u1','u2','u3'])问题:有没有办法让我在用户和密码之间建立依赖关系,所以它会抛出错误,因为没有指定用户u2的密码?不太相关的问题:如何为所有用户指定默认的foo值?对于给定的输入,我希望foo等于['f1','bar','bar']。我的主要问题的解决方案是检查列表用户和密码是否具有相同的长度,但这不是我要找的
使用typeargparse.add_argument的参数方法,您可以要求参数是可读文件:parser.add_argument('--sqlite-file',type=argparse.FileType('r'))作为指定此类型的好处,argparse会检查文件是否可以读取,如果不能读取则向用户显示错误。有没有办法获取传递的文件名而不是io.TextIOWrapper的实例?或io.BufferedReader?由于文件名出现在解析器的字符串表示中('sqlite_file':或'sqlite_file':),所以应该可以。怎么做? 最佳答案
我正在编写一个Python脚本来处理一个机器可读的文件并输出一个关于其中包含的数据的人类可读的报告。我想提供将数据输出到stdout(-s)(默认情况下)或txt(-t)或csv(-c)文件。我想要一个默认行为的开关,就像许多命令一样。就用法:而言,我希望看到类似script[-s|-c|-t]输入文件,如果没有传递参数,则将-s设置为默认值。我目前有(对于相关参数,简而言之):parser=argparse.ArgumentParser()group=parser.add_mutually_exclusive_group()group.add_argument('-s','--std