我正在尝试理解以下代码:
...
parser=argparse.ArgumentParser
parser.add_argument('--test_set', default='liberty', type=str)
parser.add_argument('--test_matches', default='xxxxx.txt', type=str)
...
def main(args):
opt=parser.parse_args(args)
...
def load_provider():
p=np.load(opt.test_set)[()]
for i.t in enumerate(['matches', 'nonmatches']):
p[t] =p['match_data'][opt.test_matches][i]
return p
...
if __name__=='__main__':
main(sys.argv[1:])
因此,当我克隆代码并下载数据集时,liberty
是一个包含bmp图像和txt文件的文件夹,因此当我运行代码时,出现以下错误:
IsADirectoryError: [Errno 21] Is a directory: 'liberty'
我知道np.load
应该读取特定文件而不是目录,但是我试图了解np.load(opt.test_set)[()]
的含义。
答案 0 :(得分:0)
这只是常规的numpy.load()
call,后面是带有空元组的索引操作(printOverridableCompileTimeType
)。
以下等效,但各部分分开:
.
.
.
"query" : {
"bool": {
"should" {
…
}
}
}
在没有更多上下文的情况下,为什么代码为什么要使用空元组作为要返回的[...]
的键,这是不清楚的。
result = np.load(opt.test_set)
key = ()
p = result[key]
不支持加载目录,句号,并且您发布的代码没有任何不同。 np.load()
的值应指向文件,而不是目录,请参阅文档 受支持。
一个快速的Google将我指向this GitHub repository,其中的指示似乎表明Python代码是由Lua脚本驱动的,该脚本明确将np.load()
设置为特定文件,请参见{{3} }。