更简便的Python控制台程序编写方式(args是否存在)

1 投票
5 回答
649 浏览
提问于 2025-04-16 11:58

我有一些代码,里面有太多这样的东西了:

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

有没有更简单的方法来处理这个呢?

简单来说,就是想找个更好的办法来检查输入是否存在,如果不存在就采取相应的措施。

谢谢!

5 个回答

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'}

你可以很方便地处理默认参数、必需参数、选项等等。

1

你可以使用 len() 这个函数来获取一个序列的长度,比如 sys.argv 的长度。

3

看看这个argparse模块吧(它的功能比这里展示的要多得多):

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)

撰写回答