标签: argparse

控制argparse帮助参数列表的格式?

import argparse
parser = argparse.ArgumentParser(prog='tool')
args = [('-u', '--upf', 'ref. upf', dict(required='True')),
        ('-s', '--skew', 'ref. skew', {}),
        ('-m', '--model', 'ref. model', {})]
for args1, args2, desc, options in args:  
     parser.add_argument(args1, args2, help=desc, **options)

parser.print_help()
Run Code Online (Sandbox Code Playgroud)

输出:

usage: capcheck [-h] -u UPF [-s SKEW] [-m MODEL]

optional arguments:
  -h, --help            show this help message and exit
  -u UPF, --upf UPF     ref. upf
  -s SKEW, --skew SKEW  ref. skew
  -m MODEL, --model MODEL
                        ref. model
Run Code Online (Sandbox Code Playgroud)

我如何打印参考.-m MODEL, --model MODEL当我使用-h …

python argparse

26
推荐指数
2
解决办法
1万
查看次数

如何使用argparse要求我的python脚本的参数是0.0-1.0之间的浮点数?

我想argparse在Python 2.7 上使用我的脚本参数之一要求介于0.0和1.0之间.是否argparse.add_argument()支持呢?

python range command-line-arguments argparse

26
推荐指数
3
解决办法
9966
查看次数

python argparse - 两者都是可选参数,或者两者都不是

我有一个使用默认名称和密码的程序.我正在使用argparse来允许用户指定命令行选项,我想让用户为程序提供不同的名称和密码以供使用.所以我有以下内容:

parser.add_argument(
    '-n',
    '--name',
    help='the login name that you wish the program to use'
    )

parser.add_argument(
    '-p',
    '--password',
    help='the password to log in with.'
    )
Run Code Online (Sandbox Code Playgroud)

但是仅指定名称或仅指定密码没有任何意义,但指定两者都没有意义.我注意到argparse确实能够指定两个参数是互斥的.但我所拥有的是必须同时出现的两个论点.我该如何得到这种行为?(我发现文档中提到了"论证组",但它们似乎没有解决我的问题http://docs.python.org/2/library/argparse.html#argument-groups)

python command-line-arguments argparse

26
推荐指数
3
解决办法
8992
查看次数

如何在python argparse中使参数可选

我想对myprog工作进行这些调用,而不是其他人.

$ python3 myprog.py -i infile -o outfile
$ python3 myprog.py -o outfile
$ python3 myprog.py -o
$ python3 myprog.py 
Run Code Online (Sandbox Code Playgroud)

特别是我想指定infile而不是outfile是非法的.

在第三种情况下,假定outfile的默认名称为"out.json".在第二种,第三种和第四种情况下,假定输入文件的默认名称为"file.n.json",其中n是整数版本号.在第四种情况下,输出文件将是"file.n + 1.json",其中n + 1是比输入文件上的版本号大1的版本号.我的代码的相关部分是:

import argparse

parser = argparse.ArgumentParser(description="first python version")
parser.add_argument('-i', '--infile', nargs=1, type=argparse.FileType('r'), help='input file, in JSON format')
parser.add_argument('-o', '--outfile', nargs='?', type=argparse.FileType('w'), default='out.json', help='output file, in JSON format')

args = parser.parse_args()

print("Here's what we saw on the command line: ")
print("args.infile",args.infile)
print("args.outfile",args.outfile)

if args.infile and not args.outfile:
    parser.error("dont specify an infile without specifying an outfile")
elif …
Run Code Online (Sandbox Code Playgroud)

python argparse

26
推荐指数
2
解决办法
3万
查看次数

用argparse打印命令行参数?

argparse用来解析命令行参数.

为了帮助调试,我想print在调用Python脚本的参数中添加一行.有没有一种简单的方法可以做到这一点argparse

python python-2.7 argparse

26
推荐指数
3
解决办法
2万
查看次数

自定义argparse帮助消息

我编写了以下示例代码来演示我的问题.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-v', '--version', action='version',
                    version='%(prog)s 1.0')
parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

这会产生以下帮助信息.

$ python foo.py --help
usage: foo.py [-h] [-v]

optional arguments:
  -h, --help     show this help message and exit
  -v, --version  show program's version number and exit
Run Code Online (Sandbox Code Playgroud)

我想自定义此帮助输出,以便将所有短语和句子大写,并将句点放在句子之后.换句话说,我希望像这样生成帮助消息.

$ python foo.py --help
Usage: foo.py [-h] [-v]

Optional arguments:
  -h, --help     Show this help message and exit.
  -v, --version  Show program's version number and exit.
Run Code Online (Sandbox Code Playgroud)

这是我可以使用argparse API控制的东西.如果是这样,怎么样?能否请您提供一个小例子来说明如何做到这一点?

python argparse python-3.x

26
推荐指数
3
解决办法
2万
查看次数

为什么argparse给我一个列表清单?

我刚刚注意到argparse中的一个行为使我感到困惑(我猜我之前从未使用它作为一个愚蠢的文件列表):

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('multi', action='append', nargs='+')
print(parser.parse_args())
Run Code Online (Sandbox Code Playgroud)

这给了我输出:

~$ ./testargs.py foo bar baz
Namespace(multi=[['foo', 'bar', 'baz']])
~$ 
Run Code Online (Sandbox Code Playgroud)

我希望multi['foo', 'bar', 'baz'],不是一个列表中列表.按原样,我必须args.multi[0]在处理之前抓住,这不是什么大问题,但感觉就像一个丑陋的疣,我想知道为什么它在那里.

我是在做傻事add_argument,还是这只是一个不可避免的怪癖?

python argparse

25
推荐指数
1
解决办法
7663
查看次数

ImportError:没有名为argparse的模块

我试图运行一个Python程序,但得到错误

ImportError: No module named argparse
Run Code Online (Sandbox Code Playgroud)

我在StackOverflow上找到了问题"在cli中使用argparse Python模块"并尝试了第一条注释,即运行命令

python -c "import argparse; print argparse"
Run Code Online (Sandbox Code Playgroud)

结果导致了

<module 'argparse' from '/usr/lib/python2.7/argparse.pyc'>
Run Code Online (Sandbox Code Playgroud)

对我来说,似乎机器上安装了Python 2.7(我不是管理员),argparse模块也存在.所以我想知道为什么找不到这个模块.在另一台机器上,脚本按原样运行.在上面提到的帖子中,有评论可能sys.path被打破.我不知道这意味着什么,或者我如何改变它的价值.有任何想法吗?

python install pip python-install argparse

25
推荐指数
5
解决办法
9万
查看次数

Python argparse:名称参数

我正在编写一个使用argparse的程序,用于解析我需要的一些参数.

现在我有这个:

parser.add_argument('--rename', type=str, nargs=2, help='some help')

当我运行这个脚本时,我看到了这个:

optional arguments:
  -h, --help            show this help message and exit
  --rename RENAME RENAME
                        some help
Run Code Online (Sandbox Code Playgroud)

如何以帮助"页面"向我显示的方式更改我的代码:

--rename OLDFILE NEWFILE
Run Code Online (Sandbox Code Playgroud)

那么我可以用这种方式使用OLDFILENEWFILE值吗?

args.rename.oldfile
args.rename.newfile
Run Code Online (Sandbox Code Playgroud)

python argparse

24
推荐指数
1
解决办法
1万
查看次数

argparse Python 2.7中一个参数的多个文件

试图在argparse中创建一个参数,在这里可以输入几个可以读取的文件名. 在这个例子中,我只是试图打印每个文件对象,以确保它正常工作,但我收到错误:

error: unrecognized arguments: f2.txt f3.txt
Run Code Online (Sandbox Code Playgroud)

.我怎样才能让它识别出所有这些?

我的命令在终端运行程序并读取多个文件

python program.py f1.txt f2.txt f3.txt
Run Code Online (Sandbox Code Playgroud)

Python脚本

import argparse

def main():
    parser = argparse.ArgumentParser()      
    parser.add_argument('file', nargs='?', type=file)
    args = parser.parse_args()

    for f in args.file:
        print f

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

我用过nargs='?'b/c我希望它是可以使用的任意数量的文件.如果我add_argument改为:

parser.add_argument('file', nargs=3)
Run Code Online (Sandbox Code Playgroud)

然后我可以打印它们作为字符串,但我不能让它与'?'一起工作

python parsing arguments file argparse

24
推荐指数
1
解决办法
2万
查看次数