所以我有一些代码中含有太多这些代码
try:
if argv[4]:
n = argv[4]
except IndexError, e:
n = raw_input("Enter n: ")
有更简单的方法吗?
基本上是检查输入存在的更好方法,然后是否相应的操作。
由于
答案 0 :(得分:3)
查看argparse
模块(其中 lot 比此处显示的更多):
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print args.accumulate(args.integers)
答案 1 :(得分:1)
您可以使用len()
获取序列的长度,例如sys.argv
。
答案 2 :(得分:1)
我使用plac库 - 这对我来说是最简单的方法。你只需要用一些参数定义一个函数:
import plac
def main(arg1, arg2, arg3=None, arg4='default value'):
print locals()
if __name__ == '__main__':
plac.call(main)
你打电话给你的剧本是这样的:
$ python my_console_program.py 111 222
您将命令行参数作为函数参数:
{'arg1': '111', 'arg2': '222', 'arg3': None, 'arg4': 'default value'}
您可以轻松处理默认和必需的参数,选项等。
答案 3 :(得分:0)
您可以定义包装函数。
答案 4 :(得分:0)
根据命令行参数的复杂性和您正在使用的Python版本,您可以尝试argparse模块(Python 2.7中提供)。
Python文档中的描述:
argparse模块可以轻松编写用户友好的命令行界面。程序定义了它需要的参数,argparse将弄清楚如何解析sys.argv中的参数。当用户给程序提供无效参数时,argparse模块还会自动生成帮助和使用消息并发出错误。