我在应用程序的一种方法中使用Python的请求库。该方法的主体如下所示:
def handle_remote_file(url, **kwargs):
response = requests.get(url, ...)
buff = StringIO.StringIO()
buff.write(response.content)
...
return True
我想为该方法编写一些单元测试,但是,我想做的是传递一个伪本地URL,例如:
class RemoteTest(TestCase):
def setUp(self):
self.url = 'file:///tmp/dummy.txt'
def test_handle_remote_file(self):
self.assertTrue(handle_remote_file(self.url))
当我使用本地URL调用 requests.get 时,出现以下 KeyError 异常:
requests.get('file:///tmp/dummy.txt')
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/packages/urllib3/poolmanager.pyc in connection_from_host(self, host, port, scheme)
76
77 # Make a fresh ConnectionPool of the desired type
78 pool_cls = pool_classes_by_scheme[scheme]
79 pool = pool_cls(host, port, **self.connection_pool_kw)
80
KeyError: 'file'
问题是如何将本地URL传递给 request.get ?
PS:我整理了上面的示例。它可能包含许多错误。
正如@WooParadog解释的那样,请求库不知道如何处理本地文件。虽然,当前版本允许定义传输适配器。
因此,您只需定义自己的适配器即可处理本地文件,例如:
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模块。
问题内容: 我正在使用python中的请求库发出HTTP请求,但我需要来自响应http请求的服务器的IP地址,因此,我试图避免进行两次调用(可能与响应的IP地址不同)请求。 那可能吗?是否有任何python http库允许我这样做? ps:我还需要发出HTTPS请求并使用经过身份验证的代理。 更新1: 例: 然后,我想知道响应中的方法或属性将哪些IP地址请求连接到了。在其他库中,我可以通过找到袜子
我希望在连接到wifi网络时,在运行我的应用程序的手机上获取用户的本地IPv4地址。使用以下代码: 我可以得到一些接近IPv4地址的信息,但与命令行中的IPv4地址相比,它并不完全相同。有更好的办法吗?我知道formatIpAddress已被弃用,但在我找到获取IPv4地址的方法之前,我暂时不太担心这个问题。 编辑: 我发现手机wifi设置中的ip地址是我在使用建议的解决方案获取ip地址时得到的。
问题内容: 我正在寻找一种方法(使用python)从本地网络上的设备获取地址。 地址是已知的。 目标是建立一个脚本,该脚本将定期轮询IP地址数据库,以确保mac地址没有更改,如果有更改,则将电子邮件警报发送给我自己。 问题答案: 用Python回答问题取决于您的平台。我没有Windows,因此以下解决方案可在我写过的Linux机器上使用。对正则表达式进行小的更改将使其在OS X中运行。 首先,您必
问题内容: 如何仅使用 proc 获得所有网络接口的(IPv4)地址?经过广泛的调查,我发现了以下内容: 使用,需要打开套接字并充分了解所有接口名称。在Linux上的任何手册页中也没有记录。 包含,但这是接口统计信息的列表。 包含,这正是我需要的,但需要IPv6。 通常,在中很容易找到接口,但是很少使用实际地址,除非在某些连接中有明确的一部分。 有一个名为的系统调用,这是Windows所期望的非常
我试图从一个简单的文本文件中获取地址,这样不理解代码的人仍然可以添加/删除或更改地址。 Phpmailer工作完全正常,当我设置一个地址,直接写在代码中,甚至与数组和Foreach。 所以现在我有这个: mail.php: mail.txt: echo确实返回了两个地址,但是var在addAddress()行中似乎不起作用,我得到了一个常见的错误:Mailer error:您必须至少提供一个收件人
请不要使用“tika”作为答案。我已经尝试了这个问题的答案: 如何从PDF文件中提取文本? 我有这个PDF文件,https://drive.google.com/file/d/1aUfQAlvq5hA9kz2c9CyJADiY3KpY3-Vn/view?usp=sharing,我想复制文本。 输出为“提交日期:2019-10-21 16:03:36.093 |表单键:5544”,这只是文本的一部分