如果我将它与 getopt
一起使用:
import getopt
import sys
opts,args = getopt.getopt(sys.argv,"a:bc")
print opts
print args
opts
将为空。不会创建元组。但是,如果我将使用 sys.argv[1:]
,一切都会按预期进行。我不明白这是为什么。有人愿意解释一下吗?
最佳答案
sys.argv
的第一个元素(sys.argv[0]
)是当前正在执行的脚本的名称。因为此脚本名称(可能)不是有效参数(并且可能不是以 -
或 --
开头),getopt
不承认它是一个论点。由于 getopt
工作方式的性质,当它看到不是命令行标志的内容(不是以 -
或 --
),它停止处理命令行选项(并将其余参数放入 args
),因为它假定其余参数是将由程序处理的项目(例如作为文件名或其他“必需”参数)。
关于python - 如果 sys.argv 完全通过,为什么 getopt 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1540365/