python-使用argparse,但有用于原始输入的选项
我有一些这样的代码-python-使用argparse,但有用于原始输入的选项,python,Python,我有一些这样的代码- ## ARGUMENTS parser = argparse.ArgumentParser() parser.add_argument("environment", help="Environment to change queue") parser.add_argument("queue", help="Queue to change") parser.add_argument("limit", help="Limit value") args = parser.pars
## ARGUMENTS
parser = argparse.ArgumentParser()
parser.add_argument("environment", help="Environment to change queue")
parser.add_argument("queue", help="Queue to change")
parser.add_argument("limit", help="Limit value")
args = parser.parse_args()
current_user = getpass.getuser()
environment = raw_input("Environment you are in: ")
queue = raw_input("Queue you wish to modify: ")
limit = raw_input("Limit value of Queue: ")
我想做的是,如果调用文件时没有提供参数-
prog.py DEV test_queue 1
我希望它要求输入获取值。如果您愿意使用命名参数
## ARGUMENTS
import argparse
import getpass
parser = argparse.ArgumentParser()
parser.add_argument("--environment", help="Environment to change queue",
default=None)
parser.add_argument("--queue", help="Queue to change", default=None)
parser.add_argument("--limit", help="Limit value", default=None)
args = parser.parse_args()
current_user = getpass.getuser()
environment = args.environment if args.environment else raw_input("Environment you are in: ")
queue = args.queue if args.queue else raw_input("Queue you wish to modify: ")
limit = args.limit if args.limit else raw_input("Limit value of Queue: ")
print environment, queue, limit
如果你愿意使用命名参数
## ARGUMENTS
import argparse
import getpass
parser = argparse.ArgumentParser()
parser.add_argument("--environment", help="Environment to change queue",
default=None)
parser.add_argument("--queue", help="Queue to change", default=None)
parser.add_argument("--limit", help="Limit value", default=None)
args = parser.parse_args()
current_user = getpass.getuser()
environment = args.environment if args.environment else raw_input("Environment you are in: ")
queue = args.queue if args.queue else raw_input("Queue you wish to modify: ")
limit = args.limit if args.limit else raw_input("Limit value of Queue: ")
print environment, queue, limit
如果您确实需要位置参数,我建议跳过argparse,使用老式的sys.argv:
import sys
import getpass
current_user = getpass.getuser()
argv = sys.argv[1:]
environment = argv[0] if len(argv) > 0 else raw_input("Environment you are in: ")
queue = argv[1] if len(argv) > 1 else raw_input("Queue you wish to modify: ")
limit = argv[2] if len(argv) > 2 else raw_input("Limit value: ")
如果您确实需要位置参数,我建议跳过argparse,使用老式的sys.argv:
import sys
import getpass
current_user = getpass.getuser()
argv = sys.argv[1:]
environment = argv[0] if len(argv) > 0 else raw_input("Environment you are in: ")
queue = argv[1] if len(argv) > 1 else raw_input("Queue you wish to modify: ")
limit = argv[2] if len(argv) > 2 else raw_input("Limit value: ")
比我想象的优雅多了谢谢!我猜没有办法解决这个问题——环境xxx——队列xxx——限制x?让我得到了答案,我通过做下面的
解析器摆脱了命名参数。添加参数('environment',nargs='?',default=None)
解析器。添加参数('queue',nargs='?',default=None)
解析器。添加参数('limit',nargs='?',default=None)
可能(例如)args.environment如果args.environment不是None….
会更好,因为提供空字符串作为参数值可能是有效的。比我想象的要优雅得多谢谢!我猜没有办法解决整个问题--环境xxx--队列xxx--限制x?找到答案了我去掉了命名的argu通过执行以下操作来执行语法分析器。添加参数('environment',nargs='?',default=None)语法分析器。添加参数('queue',nargs='?',default=None)
语法分析器。添加参数('limit',nargs='?',default=None)
可能(例如)args.environment如果args.environment不是None….
会更好,因为提供空字符串作为参数值可能是有效的。