python - 如果 sys.argv 完全通过,为什么 getopt 不工作?

标签 python getopt

如果我将它与 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/

相关文章:

python - 获取已排序矩阵的索引

c - 在 C 中使用 getopt 检测没有选项(在 Linux 中)

c - C 中的 getopt 函数

c - 使用函数 getopt 得到除数的个数

python - Errno 24 附加到大型 CSV 文件时打开的文件太多

python - 支持二进制的 Tornado websockets

python - 初学者得到 ValueError

linux - 如何防止将参数传递给在 getopt 中不带参数的参数?

python - 错误 : random_sample() takes at most 1 positional argument (2 given)

python - 是否可以在 keras LSTM 的标签集中屏蔽 NaN 值?