草庐IT

argparse_test

全部标签

python - argparse - 重建命令行

在Python中,我如何解析命令行、编辑生成的解析参数对象并生成带有更新值的有效命令行?例如,我想pythoncmd.py--foo=bar--step=0调用pythoncmd.py--foo=bar--step=1使用所有原始--foo=bar参数,在使用默认值时可能没有添加额外的参数。argparse是否可行? 最佳答案 您可以使用argparse来解析命令行参数,然后根据需要修改它们。然而目前,argparse缺少反向工作并将这些值转换回命令行字符串的功能。然而,有一个包可以精确地做到这一点,称为argunparse.例如c

Python argparse 切换标志

argparse中有什么方法可以解析像[+-]a,b,c,d这样的标志吗?foo.py+s-b应该将True存储在s的dest中,将False存储在b的dest中,就像完成的一样通过Windowsattrib或Linuxchmod。目前,我使用2个单独的参数+s和-s分别与store_true和store_false.但是它创建了一个丑陋的帮助,它列出了每个标志两次(+a&-a)另一种解决方法是使用正则表达式手动解析扩展的arg(不知何故似乎更容易使用自定义描述,但是在这样做之前我只是想看看周围是否有任何东西使用它我可以使用argparse本身执行相同的操作。

python - Python 的 argparse 可以像 gnu getopt 一样置换参数顺序吗?

GNUgetopt和使用它的命令行工具允许选项和参数交错,称为排列选项(参见http://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html#Using-Getopt)。Perl的Getopt::Long模块也支持这个(使用qw(:configgnu_getopt))。argparse似乎不支持(甚至不提及)置换选项。有很多与arg/opt顺序相关的SO问题,但似乎没有一个能回答这个问题:Canargparsebemadetopermuteargumentorderlikegetopt?用例是一个原型(prototy

python - 如何使用 python argparse 将 add_argument_group 添加到 add_mutually_exclusive_group

我正在尝试实现以下内容:$prog.py-husage:prog.py[-h][-s|-m][[-y[year]]|[[-1|-3][month][year]]]但是,无论我怎么玩add_argument_group和add_mutually_exclusive_group,#!/usr/bin/envpythonimportargparsedefmain(opt):print(opt)if__name__=='__main__':parser=argparse.ArgumentParser()bar=parser.add_mutually_exclusive_group()bar.a

python - 从 emacs 运行 py.test

如果正在编辑的文件的名称以test_开头,我希望C-cC-c运行py.test并在另一个缓冲区中显示输出,否则通常运行py-execute-buffer。我该怎么做?我在python模式下使用emacs23.1.1,可以从命令行访问py.test。 最佳答案 这还没有经过特别好的测试;这只是一个粗略的想法。(defunpy-do-it()(interactive)(if(string-match(rxbos"test_")(file-name-nondirectory(buffer-file-name)))(compile"py.t

python - 如何在 Python 中获取 argparse 文件的目录?

我使用argparse从用户那里获取文件:importargparse,osparser=argparse.ArgumentParser()parser.add_argument('file',type=file)args=parser.parse_args()然后我想知道这个文件所在的目录,比如:print(os.path.abspath(os.path.dirname(args.inputfile)))当然,因为args.inputfile是一个file对象,所以这是行不通的。怎么做? 最佳答案 您可以从.name属性中获取文件

python argparse : arg with no flag

我有以下代码:parser.add_argument('file',help='filetotest')parser.add_argument('-revs',help='rangeofversions',nargs='+',default=False)有没有办法在使用时不使用标志-revs,就像这样:./somescript.pysettings.json1234 最佳答案 是的。您有多种解决方案:正如Mrav提到的,您可以使用系统参数(sys.argv[0...])或者使用argparse。来自documentation(符合p

python - 为什么 argparse 没有正确解析我的 bool 标志?

这个问题在这里已经有了答案:Parsingbooleanvalueswithargparse(26个答案)关闭5年前。我正在尝试使用argparse模块让我的Python程序接受灵活的命令行参数。我想传递一个简单的bool标志,并说True或False以在我的代码中执行适当的分支。请考虑以下事项。importargparseparser=argparse.ArgumentParser(prog='test.py',formatter_class=argparse.ArgumentDefaultsHelpFormatter)parser.add_argument('-boolflag',

python - 默认跳过测试,除非 py.test 中存在命令行参数

我有一个持续2天的长期测试,我不想将其包含在常规测试运行中。我也不想键入命令行参数,这会在每次常规测试运行时取消选择它和其他测试。当我确实需要时,我更愿意选择默认取消选择的测试。我尝试将测试从test_longrun重命名为longrun并使用命令py.testmytests.py::longrun但这不起作用。 最佳答案 除了上面的pytest_configure解决方案,我还找到了pytest.mark.skipif。你需要将pytest_addoption()放入conftest.pydefpytest_addoption(p

python - argparse:获取未定义数量的参数

我正在构建一个脚本,该脚本使用参数来配置行为并读取未定义数量的文件。使用以下代码可以让我读取一个文件。有没有什么方法可以做到这一点而不必设置另一个参数来告诉脚本应该读取多少个文件?parser=argparse.ArgumentParser()parser.add_argument("FILE",help="FiletostoreasGist")parser.add_argument("-p","--private",action="store_true",help="MakeGistprivate") 最佳答案 是的,将您的"FI