``` ## 第一个参数是访问方式,get/put/delete/post等,第二个参数是文件或者uri字符串,如/item/es/_search ## 文件中,第一行为uri字符串 ## 其他行合并组成一个访问的data数据 ## 测试失败,不识别query,暂时未找到解决方法 #!/usr/bin/env python #_*_Coding:UTF-8_*_ import requests import sys import json import os class Esdata(object): def __init__(self, refers, header): self.refers = refers self.header = header ## 通过脚本参数传入,决定调用的函数 def operator(self, func): return getattr(requests, func) ## 得到response def getdata(self, func, uri, data): url = self.refers + uri if self.operator(func) in ["put", "post"]: response = self.operator(func)(url, data=data, headers=header) else: response = self.operator(func)(url, params=data, headers=header) return response if __name__ == '__main__': refers = 'http://127.0.0.1:9200' header = {"content-Type": "application/json"} # 传递参数,get/put/post/delete等 methods = sys.argv[1] d = sys.argv[2] # 判断第二个参数是否文件 if d and os.path.isfile(d): with open(d, 'rb') as f: # readline函数,一次读取一行,这是第一行uri uri = f.readline() data = '' # 其他行组成data,用于传入访问链接 for line in f.readlins()[0:]: data = data + line.strip() else: uri = d data = None # 读出的data中,会把双引号转换成单引号,但转换成json格式就会异常,需要替换一下 data = data.replace("\'","\"") es = Esdata(refers, header) res = es.getdata(methods, uri, json.loads(data)) print(json.dumps(res.text, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False)) ```