更新时间:2023-02-23 21:13:22
正如@WooParadog 所解释的,请求库不知道如何处理本地文件.虽然,当前版本允许定义传输适配器.
As @WooParadog explained requests library doesn't know how to handle local files. Although, current version allows to define transport adapters.
因此,您可以简单地定义自己的适配器来处理本地文件,例如:
Therefore you can simply define you own adapter which will be able to handle local files, e.g.:
from requests_testadapter import Resp
class LocalFileAdapter(requests.adapters.HTTPAdapter):
def build_response_from_file(self, request):
file_path = request.url[7:]
with open(file_path, 'rb') as file:
buff = bytearray(os.path.getsize(file_path))
file.readinto(buff)
resp = Resp(buff)
r = self.build_response(request, resp)
return r
def send(self, request, stream=False, timeout=None,
verify=True, cert=None, proxies=None):
return self.build_response_from_file(request)
requests_session = requests.session()
requests_session.mount('file://', LocalFileAdapter())
requests_session.get('file://<some_local_path>')
我在上面的例子中使用了 requests-testadapter 模块.
I'm using requests-testadapter module in the above example.