python 中如何设置argparse接受一个必须参数,一个可选参数

发布于 2022-09-06 00:50:55 字数 448 浏览 12 评论 0

现在我的参数设置是:

    parser.add_argument('f', metavar="input file", help='input file')
    parser.add_argument('o', metavar="output file", help='output file')

这样设置则两个参数都是必须的,有什么办法能让"f"是必须参数,而"o"是可选参数,让程序可以通过:

python3 main.py input.txt

python3 main.py input.txt output.txt

两种方法来调用呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陌生 2022-09-13 00:50:55

用nargs参数啊
argparse模块官方文档内容

parser = argparse.ArgumentParser()
parser.add_argument('infile', nargs='?', type=argparse.FileType('r'),
                    default=sys.stdin)
parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'),
                    default=sys.stdout)
parser.parse_args(['input.txt', 'output.txt'])
夜光 2022-09-13 00:50:55

位置参数都是必须的,想要可选的话用 -o 来单独指定(这种参数名字就叫 optional argument,可选参数)

add_argument('input', ...)
add_argument('--output', '-o', ...)

然后这样调用

python prog.py input.txt -o output.txt
python prog.py input.txt
樱花落人离去 2022-09-13 00:50:55

python main.py -f inputfile -o outputfile

import sys, getopt
opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
input_file=""
output_file=""
for op, value in opts:
  if op == "-f":
    input_file = value
  elif op == "-o":
    output_file = value
  elif op == "-h":
    usage()
    sys.exit()

http://www.jb51.net/article/6...

不知道你要的是不是这个效果

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文