我发现了非常有用的语法parser.add_argument('-i','--input-file',type=argparse.FileType('r'),default='-')用于指定输入文件或使用标准输入——这两者都是我想要在我的程序中使用的。但是,并不总是需要输入文件。如果我不使用-i或使用其中之一重定向输入$someprog|my_python_prog$my_python_prog我不希望我的Python程序等待输入。我希望它继续前进并使用默认值。 最佳答案 标准库documentationforargparse建议此
我有一个测试文件,其中包含需要花费大量时间的测试(它们将计算发送到集群并等待结果)。所有这些都在特定的TestCase类中。由于它们需要时间而且不太可能中断,我希望能够选择是否运行此测试子集(最好的方法是使用命令行参数,即“./tests.py--offline"或类似的东西),所以我可以经常快速地运行大部分测试,并在我有时间的时候偶尔运行整个测试集。现在,我只是使用unittest.main()来开始测试。 最佳答案 要仅运行单个特定测试,您可以使用:python-munittesttest_module.TestClass.te
我正在使用py.test运行一组测试。他们通过。伊皮!但我收到这条消息:ExceptionKeyError:KeyError(4427427920,)inignored我应该如何去追踪它的来源?(我没有直接使用线程,而是使用gevent。) 最佳答案 我观察到了一个类似的问题,并决定看看到底发生了什么——让我描述一下我的发现。我希望有人会觉得它有用。短篇故事它确实与猴子修补threading有关。模块。事实上,我可以通过在猴子修补线程之前导入线程模块来轻松触发异常。以下两行就足够了:importthreadingimportgeve
我试图弄清楚如何让pythonsetup.pytest运行相当于python-munittestdiscover。我不想使用run_tests.py脚本,也不想使用任何外部测试工具(如nose或py.test)。如果该解决方案仅适用于python2.7就可以了。在setup.py中,我想我需要在配置中的test_suite和/或test_loader字段中添加一些内容,但我可以'似乎找不到正确的组合:config={'name':name,'version':version,'url':url,'test_suite':'???','test_loader':'???',}这是否可能只
我正在使用py.test在CI服务器上运行单元测试。测试使用通过网络获取的外部资源。有时测试运行器花费的时间太长,导致测试运行器被中止。我不能在本地重复这些问题。有没有办法让py.test打印出(慢)测试的执行时间,从而更容易确定有问题的测试? 最佳答案 我不确定这是否能解决您的问题,但您可以通过--durations=N在测试套件完成后打印最慢的N个测试。使用--durations=0打印全部。 关于python-使用py.test打印测试执行时间并锁定慢速测试,我们在StackOve
这个问题在这里已经有了答案:Restrictingvaluesofcommandlineoptions(1个回答)关闭5年前。是否可以要求argparse参数是几个预设值之一?我目前的方法是手动检查参数,如果它不是允许的值之一,请调用print_help()然后退出。这是当前的实现:...parser.add_argument('--val',help='Specialtestingvalue')args=parser.parse_args(sys.argv[1:])ifargs.valnotin['a','b','c']:parser.print_help()sys.exit(1)并
parser.add_argument('-auto',action='store_true')如果-auto未指定,我如何存储false?我依稀记得这样,如果未指定,它会存储None 最佳答案 store_true选项自动创建默认值False。同样,当命令行参数不存在时,store_false将默认为True。此行为的来源简洁明了:http://hg.python.org/cpython/file/2.7/Lib/argparse.py#l861argparse文档在这个主题上不清楚,所以我现在更新它们:http://hg.pyt
我想检查用户是否设置了可选的argparse参数。我可以使用isset安全地检查吗?类似这样的:if(isset(args.myArg)):#dosomethingelse:#dosomethingelse这对于float/int/string类型的参数是否同样有效?我可以设置一个默认参数并检查它(例如,设置myArg=-1,或“”为字符串,或“NOT_SET”)。但是,我最终要使用的值仅在脚本的后面计算。因此,我会将其默认设置为-1,然后稍后将其更新为其他内容。与简单地检查值是否由用户设置相比,这似乎有点笨拙。 最佳答案 我认为如
是否可以在python中添加参数argparse.ArgumentParser没有它出现在用法或帮助中(script.py--help)? 最佳答案 是的,您可以将help选项设置为add_argument到argparse.SUPPRESS。这是argparsedocumentation中的一个示例:>>>parser=argparse.ArgumentParser(prog='frobble')>>>parser.add_argument('--foo',help=argparse.SUPPRESS)>>>parser.prin
我想在argparse模块中有一些选项,例如--pm-export但是当我尝试像args.pm-export一样使用它时,我得到了错误没有属性pm。我该如何解决这个问题?是否可以在命令行选项中有-? 最佳答案 作为indicatedintheargparsedocs:Foroptionalargumentactions,thevalueofdestisnormallyinferredfromtheoptionstrings.ArgumentParsergeneratesthevalueofdestbytakingthefirstlo