更简便的Python控制台程序编写方式(args是否存在)
我有一些代码,里面有太多这样的东西了:
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)