2015-10-24 79 views
1

我有以下简单的代码:Python的命令行参数 - 希望打印错误,无参数

import sys, getopt 

ifile='' 
ofile='' 

try: 
    opts, args = getopt.getopt(sys.argv[1:],"h:i:o:") 
except getopt.GetoptError as e: 
    print (str(e)) 
    print("test.py -i input -o output") 
    sys.exit(2) 

for o, a in opts: 
    if o == '-h': 
     print 'test.py -i input -o output' 
     sys.exit() 
    elif o == '-i': 
     ifile=a 
    elif o == '-o': 
     ofile=a 

我应该需要添加,如果我想打印错误(也帮助)消息“测试-i的.py输入输出-o”当我刚执行脚本,如:

$ python test.py 

谢谢

回答

5

你可以写

if len(sys.argv) <= 1: 
    print('test.py -i input -o output') 
    exit(1) 

导入后,基本上意味着如果我没有任何参数,则输出消息并退出运行脚本。

+0

谢谢。该行应该在opts的if循环中,对吗? – exsonic01

+0

把它放在'import sys下面,我认为getopt'会更好。 –

+0

谢谢〜!它工作人员 – exsonic01

3

只是作为一个选择,如果你有兴趣,对于getopts的文件实际上是提供了一个建议,argparse使用,这显著降低你必须写处理参数的代码行。

看那文档的底部位置:

https://docs.python.org/2/library/getopt.html#getopt.GetoptError

这里是​​

https://docs.python.org/2/library/argparse.html#module-argparse

大奖金的文档以​​的是,有一个内置的“帮助“,很好地格式化。看看下面的例子。你也可以带着这个代码并进行测试。

from argparse import ArgumentParser, RawTextHelpFormatter 

parser = ArgumentParser(
    description='This application will perform actions', 
    formatter_class=RawTextHelpFormatter 
) 

parser.add_argument(
    '-i', 
    help='Things with i', 
) 

parser.add_argument(
    '-o', 
    help='Things with o', 
) 

args = vars(parser.parse_args()) 

if args.get('i'): 
    print(args.get('i')) 
elif args.get('o'): 
    print(args.get('o')) 
else: 
    parser.error('Invalid options provided') 

只是想我会分享作为替代。

+1

谢谢。我一定会看看这个命令。 – exsonic01