在下面的代码中我混合了短期和长期期权。还要注意“--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)