getopt 不太工作,我做错了什么?
getopt not quite working, what am I doing wrong?
我不确定为什么下面的代码不起作用 - 我收到错误
NameError: name 'group1' is not defined.
在我尝试使用 getopt 之前,代码运行良好。我正在尝试解析命令行输入,例如,如果我输入
python -q file1 file2 -r file3 file4
file1 和 file2 成为我第一个循环的输入 'group1'。
import sys
import csv
import vcf
import getopt
#set up the args
try:
opts, args = getopt.getopt(sys.argv[1:], 'q:r:h', ['query', 'reference', 'help'])
except getopt.GetoptError as err:
print str(err)
sys.exit(2)
for opt, arg in opts:
if opt in ('-h', '--help'):
print "Usage python -q [query files] -r [reference files]"
print "-h this help message"
elif opt in ('-q', '--query'):
group1 = arg
elif opt in ('-r', '--reference'):
group2 = arg
else:
print"check your args"
#extract core snps from query file, saving these to the set universal_snps
snps = []
outfile = sys.argv[1]
for variants in group1:
vcf_reader = vcf.Reader(open(variants))
问题是 group1 = arg
永远不会是 运行,所以当它后来到达 for variants in group1:
时,变量没有定义。
这是因为您针对定义选项的方式错误地调用了该函数。当你有这条线时:
opts, args = getopt.getopt(sys.argv[1:], 'q:r:h', ['query', 'reference', 'help'])
要求带有标志的参数(即 -q file1
和 -r file3
在 之前 指定任何其他参数。因此,如果您要将函数调用为:
python <scriptName> -q file1 -r file3 file2 file4
你会有预期的行为。这是因为所有没有关联标志的参数都出现在调用的末尾(并且可以通过 args
参数
检索
我不确定为什么下面的代码不起作用 - 我收到错误
NameError: name 'group1' is not defined.
在我尝试使用 getopt 之前,代码运行良好。我正在尝试解析命令行输入,例如,如果我输入
python -q file1 file2 -r file3 file4
file1 和 file2 成为我第一个循环的输入 'group1'。
import sys
import csv
import vcf
import getopt
#set up the args
try:
opts, args = getopt.getopt(sys.argv[1:], 'q:r:h', ['query', 'reference', 'help'])
except getopt.GetoptError as err:
print str(err)
sys.exit(2)
for opt, arg in opts:
if opt in ('-h', '--help'):
print "Usage python -q [query files] -r [reference files]"
print "-h this help message"
elif opt in ('-q', '--query'):
group1 = arg
elif opt in ('-r', '--reference'):
group2 = arg
else:
print"check your args"
#extract core snps from query file, saving these to the set universal_snps
snps = []
outfile = sys.argv[1]
for variants in group1:
vcf_reader = vcf.Reader(open(variants))
问题是 group1 = arg
永远不会是 运行,所以当它后来到达 for variants in group1:
时,变量没有定义。
这是因为您针对定义选项的方式错误地调用了该函数。当你有这条线时:
opts, args = getopt.getopt(sys.argv[1:], 'q:r:h', ['query', 'reference', 'help'])
要求带有标志的参数(即 -q file1
和 -r file3
在 之前 指定任何其他参数。因此,如果您要将函数调用为:
python <scriptName> -q file1 -r file3 file2 file4
你会有预期的行为。这是因为所有没有关联标志的参数都出现在调用的末尾(并且可以通过 args
参数