我一直在尝试将elasticsearch查询的结果转储到文件中,但python只显示错误消息。这是我的代码:
import json
count=0
keyword_array = []
with open('localFile','r') as my_keywordfile:
for keyword in my_keywordfile.readlines():
keyword_array.append(keyword.strip().strip("'"))
with open( 'localFile', 'wb') as f:
for x in keyword_array:
doc = {
"query": {
"multi_match": {
"query": x,
"type": "phrase",
"fields":"_all",
}
}
}
res = es.search(index='dbgap_062617', body=doc)
json.dump(res, f)
f是以“w”模式打开的文件,res是搜索查询的输出。 这是我看到的错误;
TypeError: a bytes-like object is required, not 'str'
然后,我用
更改了代码json.dump(''.join(res), f)
和此:
json.dump(str(res), f)
但是,同样的错误!有谁知道为什么会这样?如果我使用转储它可以工作,但我听说我们不应该使用转储!
答案 0 :(得分:0)
归功于@ user2357112。 "这是以wb模式打开的,而不是w模式。" Alos,我获得JSON字符串的原因是有效的,但JSON数据在" codebeautify.org/jsonviewer#"显然这些网站允许你只限制有限数量的字符,而我的文件没有完全加载。