gpt4 book ai didi

python - 在 python 中传递可选参数

转载 作者:行者123 更新时间:2023-11-28 21:09:42 25 4
gpt4 key购买 nike

我试图通过命令行参数传递参数来附加一个 url。这是我正在尝试的方式:

import argparse
parser = argparse.ArgumentParser(description='Arguments')
parser.add_argument('input', metavar='input', type=str)
parser.add_argument('output', metavar='text', type=str)
args = parser.parse_args()
url = 'https://example.com/?z=12&text='+args.output+'&loc{}'
print url

当我执行

python url.py text.csv hello

它将第二个传递的参数附加到 url。我想知道如何使第二个参数可选,这样即使不提供第二个参数,我也希望通过不将任何内容连接到 url 来打印 url。这是我期待的输出:

当给出两个参数时:

python url.py text.csv hello

输出应该是

https://example.com/?z=12&text=hello&loc{}

当给出单个参数时

python url.py text.csv

输出应该是

https://example.com/?z=12&text=&loc{}

最佳答案

尝试 nargs='?' 并定义一个 default:

import argparse
parser = argparse.ArgumentParser(description='Arguments')
parser.add_argument('input', metavar='input')
parser.add_argument('output', metavar='text', nargs='?', default='')
args = parser.parse_args()
url = 'https://example.com/?z=12&text='+args.output+'&loc{}'
print url

当我只用一个命令行字符串测试它时,args.output 是默认值:

In [91]: args = parser.parse_args(['one'])

In [92]: args
Out[92]: Namespace(input='one', output='')

In [93]: args = parser.parse_args(['one','two'])

In [94]: args
Out[94]: Namespace(input='one', output='two')

最好只对最后一个位置参数使用 nargs='?'(或“*”或“+”)。可以在较早的版本上使用它,但存在一些复杂问题,可能会让您返回更多问题。

关于python - 在 python 中传递可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37857567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com