编写Python控制台程序的更简单方法(存在args)

时间:2011-02-17 03:49:00

标签: python console

所以我有一些代码中含有太多这些代码

try:
    if argv[4]:
        n = argv[4]
except IndexError, e:
    n = raw_input("Enter n: ")

有更简单的方法吗?

基本上是检查输入存在的更好方法,然后是否相应的操作。

由于

5 个答案:

答案 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模块还会自动生成帮助和使用消息并发出错误。