有什么方法可以为使用 parser.add_option 创建的选项获取输入,而不为同一选项获取任何输入?
Is there any way to take inputs for a option created using parser.add_option, and not take any input for the same option?
现在,当我输入“python openweather.py --api=key --city=London --temp=fahrenheit ”在命令提示符下,我得到了所需的华氏温度输出,或者即使输入了摄氏温度(“--temp=celcius”)我也得到了所需的摄氏温度输出。
但我进一步要求的是,如果我输入“python openweather.py --api=key --city=London --temp " ,我需要默认的摄氏度输出。
问题是我无法对同一个'--temp'执行此操作,因为我不断收到错误消息:“openweather.py:错误:--temp选项需要1个参数”对于我尝试的任何事情。
以下是我使用的代码:
parser = OptionParser()
parser.add_option('--api', action='store', dest='api_key', help='Must provide api token to get the api request')
parser.add_option('--city', action='store', dest='city_name', help='Search the location by city name')
parser.add_option('--temp', action='store', dest='unit', help='Display the current temperature in given unit')
所以我需要相同的“--temp”才能接受输入并在没有输入的情况下离开。感谢任何帮助。
使用 nargs='?'
并使用 const='farenheit'
设置默认值
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--temp', '-t', nargs='?', type=str, const='farenheit')
c = parser.parse_args()
# Show what option was chosen.
# If --temp was not used, c.temp will be None
# If -- temp was used without argument, the default value defined in
# 'const='farenheit' will be used.
# If an argument to --temp is given, it will be used.
print(c.temp)
样本运行:
thierry@tp:~$ python test.py
None
thierry@tp:~$ python test.py --temp
farenheit
thierry@tp:~$ python test.py --temp celsius
celsius
现在,当我输入“python openweather.py --api=key --city=London --temp=fahrenheit ”在命令提示符下,我得到了所需的华氏温度输出,或者即使输入了摄氏温度(“--temp=celcius”)我也得到了所需的摄氏温度输出。
但我进一步要求的是,如果我输入“python openweather.py --api=key --city=London --temp " ,我需要默认的摄氏度输出。 问题是我无法对同一个'--temp'执行此操作,因为我不断收到错误消息:“openweather.py:错误:--temp选项需要1个参数”对于我尝试的任何事情。
以下是我使用的代码:
parser = OptionParser()
parser.add_option('--api', action='store', dest='api_key', help='Must provide api token to get the api request')
parser.add_option('--city', action='store', dest='city_name', help='Search the location by city name')
parser.add_option('--temp', action='store', dest='unit', help='Display the current temperature in given unit')
所以我需要相同的“--temp”才能接受输入并在没有输入的情况下离开。感谢任何帮助。
使用 nargs='?'
并使用 const='farenheit'
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--temp', '-t', nargs='?', type=str, const='farenheit')
c = parser.parse_args()
# Show what option was chosen.
# If --temp was not used, c.temp will be None
# If -- temp was used without argument, the default value defined in
# 'const='farenheit' will be used.
# If an argument to --temp is given, it will be used.
print(c.temp)
样本运行:
thierry@tp:~$ python test.py
None
thierry@tp:~$ python test.py --temp
farenheit
thierry@tp:~$ python test.py --temp celsius
celsius