我有以下功能:
def getOptions(logfile):
try:
options, arguments = getopt.getopt(programArguments[1:], 'nt:v:L:d:', ['help'])
except getopt.GetoptError:
print("\nERROR: Invalid Option")
usage()
exit()
其中programArguments = sys.argv
。
getopt
函数始终不会向options
返回任何内容,并将programArguments[1:]
的副本返回arguments
。 getopt
在哪里出错?
修改
请参阅下面的答案,我意识到自己的错误。
答案 0 :(得分:0)
你在每个争论之前使用破折号吗? (例如python program.py -n 1
)?如果你像python program.py n 1
那样运行它,它就会进入争论。
如果要传递未分配给值的值,则只应在arguments
中看到值。因此,我得到了这个电话:
> python test_getopt.py --treatment=1
options: [('--treatment', '1')] arguments: []
然后,您将遍历(键,值)选项对。
另一方面,如果我传递一个与键没有关联的附加值,它将被插入到参数列表中。例如:
> python test_getopt.py --treatment=1 temp.txt
options: [('--treatment', '1')] arguments: ['temp.txt']
有关更全面的文档,请参阅getopt documentation。
答案 1 :(得分:0)
我意识到因为我的程序将文件作为argv[1]
,getopt
一旦发现argv[1]
不是有效选项就会退出。更改为programArguments[2:]
解决了问题。