有些时候我们需要通过命令行将参数传递给脚本,C语言中有个getopt()方法,python中也有个类似的租档命令行参数解析方法getopt()。python也提供了比getopt()更简洁的argparse方法。另外,sys模块也可以实现简单的参数解析,本文将对这3种命令行参数解析方法简要介绍。
sys.argv是传入的参数列表,sys.argv[0]是当前python脚本的名称,sys.argv[1]表示第一个参数,以此类推。
命令行运行:
可以看到传入的参数通过sys.argv来获取,它就是一个参数列表。
python的getopt与C语言的的getopt()函数类似。相比于sys模块,支持长参数和短参数,并对参数解析赋值。但它需要结合sys模块进行参数解析,语法格式如下:
短参数为单个英文字母,如果必须赋值需要在后面加英文冒号( : ),长参数一般为字符串(相比短参数,更能说明参数含义),如果必须赋值需要在后面加等号( = )。
命令行运行:
注意:短参数(options)和长参数(long_options)不需要一一对应,可以任意顺序,也可以只有短参数或者只有长参数。
argparse模块提供了很多可以设置的参数,例如参数的默认值,帮助消息,参数的数据类型等。argparse类主要包括ArgumentParser、add_argument和parse_args三个方法。
下面介绍这三个函数的使用方法。
argparse默认提供了 -h | --help 参数:
命令行运行:
下面列出部分参数:
下面来添加参数:
命令行运行:
parse_args() 方法用于解析参数,在前面的示例代码中使用parse_args方法来提取悄闷参数值,对于无效或者错误的参数会打印错误信息和帮助信息:
命令行运行:
本文介绍了Python的三种命令行参数解析方法sys.argv、getopt和argparse,可以根据自己的需要进行选择,getopt和argparse两种方法相比来说,建议选择argparse,代码量更少更简洁。更详细启型弯的使用方法参考官方文档:
--THE END--
在 Python 中,raise 语句用于抛出一个异常。在 raise 语句之前的 print 语句会在抛出异常之前执行,销敬如果你在使用 raise 语句时发现 print 语句没有显示,那么可能是因为 raise 语句之后的代码没有被执行。举个例子,如果你有如下代码:局斗激
def foo():
print("before raise")
raise Exception("error")
print("after raise")
foo()
那么在执行 foo 函数时,会先打印 "before raise",然后抛出 Exception 异常,因此 "after raise" 不会被打印出来。
如果你希望在抛出异常之前打印桐袜出相应的信息,建议使用 try-except 语句来捕获异常,在 except 块中打印信息。这样,就可以保证在抛出异常之前,所有的代码都会被执行。
例如,可以使用如下代码来捕获异常:
def foo():
try:
print("before raise")
raise Exception("error")
print("after raise")
except Exception as e:
print("error:", e)
foo()
在这种情况下,执行 foo 函数时会先打印 "before raise",然后抛出 Exception 异常,最后打印 "error: error"。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)