【发布时间】:2018-03-05 10:29:08
【问题描述】:
在下面的代码中,我混合了短选项和长选项。另请注意,“--longoption1”由“=”分隔,“--longoption2”由空格分隔。但是 getopt 不区分长选项的空格和 =。相反,对于空头期权,空头期权 (x,y,z) 后面的任何内容都被视为期权的价值。注意“-x:shortvalue1 -y shortvalue2 -zshortvalue3” x 由 : 分隔,y 由空格分隔,z 甚至没有被任何东西分隔,但 getopt 仍然可以像我想象的那样解析。
import sys, getopt
commandoptions = "--longoption1=longvalue1 --longoption2 longvalue2 -x:shortvalue1 -y shortvalue2 -zshortvalue3"
parsedoptions = commandoptions.split()
print("Split by space ", parsedoptions)
opts, additionalArgs = getopt.getopt(parsedoptions, "x:y:z:", ["longoption1=", "longoption2="])
print("options ", opts)
继续,为什么下面的代码会失败?请注意,“--longoption3longvalue3”类似于“-zshortvalue3”。我的意思是期权和它的价值没有分开。在这种情况下,短期期权仍然有效,但长期期权无效。相反,它会导致以下错误:
GetoptError: option --longoption3longvalue3 not recognized
我关注了https://docs.python.org/3/library/getopt.html,但我找不到任何关于我正在寻找的答案的参考资料。
import sys, getopt
commandoptions = "--longoption1=longvalue1 --longoption2 longvalue2 --longoption3longvalue3 -x:shortvalue1 -y shortvalue2 -zshortvalue3"
parsedoptions = commandoptions.split()
print("Split by space ", parsedoptions)
opts, additionalArgs = getopt.getopt(parsedoptions, "x:y:z:", ["longoption1=", "longoption2=", "longoption3="])
print("options ", opts)
【问题讨论】:
-
“不编译”是什么意思?你看到什么样的错误输出?
-
我收到此错误“GetoptError:选项 --longoption3longvalue3 无法识别”