Python命令行参数 - 希望在没有参数时打印错误

exs*_*c01 3 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
Run Code Online (Sandbox Code Playgroud)

我应该添加什么,如果我想在我执行以下脚本时打印错误(以及帮助)消息'test.py -i input -o output':

$ python test.py 
Run Code Online (Sandbox Code Playgroud)

谢谢

emr*_*re. 7

你可以写

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

在导入之后,这基本上意味着如果我没有任何参数,则打印消息并退出运行脚本.


idj*_*jaw 5

作为替代方案,如果您感兴趣,getopts 的文档实际上提供了使用 argparse 的建议,这显着减少了您必须编写来处理参数的代码行。

在此处查看文档的底部:

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

这是文档 argparse

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

最大的好处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')
Run Code Online (Sandbox Code Playgroud)

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