python使用(options, args) = parser.parse_args() 的args为啥一直为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python使用(options, args) = parser.parse_args() 的args为啥一直为空相关的知识,希望对你有一定的参考价值。

def main():
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
action="store_false", dest="verbose", default=True,
help="don't print status messages to stdout")

(options, args) = parser.parse_args()
print args,options
if __name__ == "__main__":
main()

为什么运行python opt.py --file=outfile -q后,args没有值,options却有值
[] 'verbose': False, 'filename': 'outfile'

这个你认真看官网文档就好。positional argument 才会放进args里面。option都是放在 options里面的。另外 optparse 已经不建议使用,新的代替是 argparse.

你调用的时候加上不是参数的东西就会有 args 了。比如 python opt.py --file=outfile -q abc def ghi追问

那我看有的文档介绍:
if len(args) != 1:
parser.error("incorrect number of arguments")
不就是错误的吗?正常输入正确的参数args是空哎

追答

你别只看字面的意思。要看这个命令/这些参数的具体作用。脱离具体命令来做参数解析,毫无意义。

args有好多个定义。有的是直接 args = sys.argv[1:],有的是optparse/argparse解析出来的。想清楚你想要支持什么样的参数,想要解析成什么样子,然后再去解析。不要云里雾里的。

一个合理的程序args为空也很正常的。

参考技术A

positional argument 才会放进args里面。

option都是放在 options里面的。另外 optparse 已经不建议使用,新的代替是 argparse.

你调用的时候加上不是参数的东西就会有 args 了。比如 python opt.py --file=outfile -q abc def ghi

MAIN 函数中args参数

args[] 在命令行运行时候输入的参数,因为参数可以为多个,所以要用 数组来存,比如dos的copy命令:

copy c:\\*.* d:\\*.*

这就是两个参数c:\\*.*和d:\\*.*

以上是关于python使用(options, args) = parser.parse_args() 的args为啥一直为空的主要内容,如果未能解决你的问题,请参考以下文章

python 通用 修饰器

python OptionParser的用法

Python中的类/函数中的可选参数[重复]

python Fabric使用详解及示例

Python将字典转换为argparse

python getopt的用法