python - 使用argparse但有raw_input选项

时间:2015-02-03 02:09:12

标签: 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.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

我希望它要求输入获取值。

2 个答案:

答案 0 :(得分:5)

如果您愿意使用命名参数......

## 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

答案 1 :(得分:0)

如果你真的想要位置参数我建议跳过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: ")