我有一个简单的代码:
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)
谢谢
你可以写
if len(sys.argv) <= 1:
print('test.py -i input -o output')
exit(1)
Run Code Online (Sandbox Code Playgroud)
在导入之后,这基本上意味着如果我没有任何参数,则打印消息并退出运行脚本.
作为替代方案,如果您感兴趣,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)
只是想我会分享作为替代方案。