使用 Python 请求从本地 url 获取文件?

2024-01-28

我正在使用Python的requests http://docs.python-requests.org/en/latest/index.html我的应用程序的一种方法中的库。该方法的主体如下所示:

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))

当我打电话时请求.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 传递给请求.get?

PS:上面的例子是我编的。它可能包含很多错误。


正如 @WooParadog 所解释的,请求库不知道如何处理本地文件。虽然,当前版本允许定义传输适配器 http://docs.python-requests.org/en/latest/user/advanced/?highlight=mount#transport-adapters.

因此,您可以简单地定义自己的适配器,它将能够处理本地文件,例如:

from requests_testadapter import Resp
import os

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>')

我在用着请求测试适配器 https://github.com/ambv/requests-testadapter上面例子中的模块。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 请求从本地 url 获取文件? 的相关文章

  • 与区域指示符字符类匹配的 python 正则表达式

    我在 Mac 上使用 python 2 7 10 表情符号中的标志由一对表示区域指示符号 https en wikipedia org wiki Regional Indicator Symbol 我想编写一个 python 正则表达式来在
  • Python 中的哈希映射

    我想用Python实现HashMap 我想请求用户输入 根据他的输入 我从 HashMap 中检索一些信息 如果用户输入HashMap的某个键 我想检索相应的值 如何在 Python 中实现此功能 HashMap
  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 跟踪 pypi 依赖项 - 谁在使用我的包

    无论如何 是否可以通过 pip 或 PyPi 来识别哪些项目 在 Pypi 上发布 可能正在使用我的包 也在 PyPi 上发布 我想确定每个包的用户群以及可能尝试积极与他们互动 预先感谢您的任何答案 即使我想做的事情是不可能的 这实际上是不
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • datetime.datetime.now() 返回旧值

    我正在通过匹配日期查找 python 中的数据存储条目 我想要的是每天选择 今天 的条目 但由于某种原因 当我将代码上传到 gae 服务器时 它只能工作一天 第二天它仍然返回相同的值 例如当我上传代码并在 07 01 2014 执行它时 它
  • 使用 xlrd 打开 BytesIO (xlsx)

    我正在使用 Django 需要读取上传的 xlsx 文件的工作表和单元格 使用 xlrd 应该可以 但因为文件必须保留在内存中并且可能不会保存到我不知道如何继续的位置 本例中的起点是一个带有上传输入和提交按钮的网页 提交后 文件被捕获req
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 注册期间现有电子邮件的 422 或 409 状态代码

    我正在构建 RESTful API 遇到了一种情况 在用户注册期间 如果电子邮件已存在 则在422 and 409哪个http响应代码有意义 我浏览过类似的one https stackoverflow com questions 9269
  • 如何通过索引列表从 dask 数据框中选择数据?

    我想根据索引列表从 dask 数据框中选择行 我怎样才能做到这一点 Example 假设我有以下 dask 数据框 dict A 1 2 3 4 5 6 7 B 2 3 4 5 6 7 8 index x1 a2 x3 c4 x5 y6 x
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 如何在 pygtk 中创建新信号

    我创建了一个 python 对象 但我想在它上面发送信号 我让它继承自 gobject GObject 但似乎没有任何方法可以在我的对象上创建新信号 您还可以在类定义中定义信号 class MyGObjectClass gobject GO
  • Python ImportError:无法导入名称 __init__.py

    我收到此错误 ImportError cannot import name life table from cdc life tables C Users tony OneDrive Documents Retirement retirem
  • 如何计算Python中字典中最常见的前10个值

    我对 python 和一般编程都很陌生 所以请友善 我正在尝试分析包含音乐信息的 csv 文件并返回最常听的前 n 个乐队 从下面的代码中 每听一首歌曲都是一个列表中的字典条目 格式如下 album Exile on Main Street

随机推荐

  • 更新到 React 0.60.4 破坏了 Android 构建(错误找不到符号)

    我最近更新到React email protected cdn cgi l email protection 该应用程序在 iOS 和 xcode 上编译并运行良好 但是 当我尝试运行新的 android 代码时 我遇到以下错误 redac
  • 浏览器中的 JavaScript 正则表达式替换换行符处理

    我创建了一个 html 文本区域 能够在其中输入的任何文本的开头和结尾添加 和 我的问题是 当我在文本区域中输入一些多行数据时 正则表达式在 ff 和 ie 中的处理方式不同 Input Iam learning regex 预期输出 我在
  • 重新读取打开的文件 Python

    我有一个脚本读取文件 然后根据该文件完成测试 但是我遇到了问题 因为文件在一小时后重新加载 并且我无法让脚本在该时间点之后或当时重新读取文件 So 获取新文件来读取 读取文件 对文件执行测试 获取要读取的新文件 具有相同的名称 但如果它是解
  • 纯函数和非纯函数的区别?

    我假设纯函数必须始终具有返回类型 即 不能是void 并且无论对象的状态如何都必须具有相同的输出 并且 Impure 函数会更改对象的状态或打印对象的状态 但我使用的教科书上说 访问器通常包含 return 语句 但打印有关对象状态的信息的
  • 无法加载 DLL“iclit09b.dll”

    设置 Informix 服务器和 Informix 客户端后 我在尝试运行 ASP NET 应用程序时遇到以下问题 unable to load DLL iclit09b dll The specified procedure could
  • Linux 内核如何强制堆栈大小限制?

    我知道堆栈大小可以通过限制工具进行控制 但是内核如何强制执行其中一些限制 例如 RLIMIT STACK 由于linux不涉及堆栈操作 只是mov或push指令 那么当超出限制时内核如何发出SIGSEGV 据我了解 对于虚拟寻址 CPU 提
  • Setters AND(不是 OR 或 VS)构建器模式

    我遇到过一种情况 我使用构建器模式来构造对象 最好的例子是披萨代码 public class Pizza private int size private boolean cheese private boolean pepperoni p
  • php文件上传器无法上传

    我正在为一个旨在上传视频的网站制作一个上传器 截至目前 它不会检查它们是否是视频 而只是上传它们 我通过一个简单的表单来选择一个文件并将其提交到upload php 这是我用来执行此操作的 HTML
  • 如何以编程方式将现有项目添加到项目中?

    如何以编程方式将项目添加到项目中 类似的东西 public void AddExistingItem string projectPath string existingItemPath I m making up the Project
  • 在 C++ 中使用 C 功能是一种不好的做法吗?

    例如printf代替cout scanf代替cin using define宏等 我不会说不好 因为这取决于个人选择 我的策略是 当 C 中有可用的类型安全替代方案时 请使用它们 因为这会减少代码中的错误
  • 如何在 Python 中编辑文本文件?

    text open samiam txt r keyword i keyword2 i replacement I replacement2 I for line in text if keyword in line text write
  • 如何将不连续的单元格范围从 Excel 传递到 ExcelDNA 函数

    考虑这样的 ExcelDNA 函数定义 ExcelFunction Name Fnc1 Description Fnc1 public static object Fnc1 ExcelArgument Name Arg1 Descripti
  • iOS >> CoreData >> 我应该创建 ID 属性还是可以使用 SQLite 对象 ID?

    使用 CoreData 时 我是否需要创建一个 ID 属性以便为每条记录提供某种唯一键 或者我可以访问表中每行的数据库 ID 字段吗 如果有一种方法可以使用 DB ID 字段 我将不胜感激有关如何在通过 ManagedObject 实例保存
  • pandas 比较引发 TypeError:无法将 dtyped [float64] 数组与 [bool] 类型的标量进行比较

    我的数据帧具有以下结构 Index 1008 entries Trial1 0 to Trial3 84 Data columns total 5 columns CHUNK NAME 1008 non null values LAMBDA
  • 如何以编程方式从网站下载图像?

    我需要从网站下载图像 并且我有登录名和密码 但是如果我只是使用 URL 来下载图像 则会抛出异常 会话中没有值 我想我需要登录网站才能以编程方式下载图像 你有什么解决办法 提前致谢 在简单的情况下 您可以使用URLConnection ht
  • Graphql 错误:仅在 Android 中网络请求失败

    我的所有查询在 iOS 中运行良好 但在 Android 中给出网络请求失败错误 其他一些 SO 和 GitHub 解决方案建议我不应该使用localhost for my uri并且应该使用我计算机的IP地址 但我已经不使用本地主机了 c
  • ContentProvider不会出现在数据和同步区域

    我试图让自定义 ContentProvider 显示在 数据和同步 下 但遇到了一些问题 也就是说 它没有出现 具体内容 我的 AndroidManifest xml 有提供者和服务
  • 如何生成哈希签名?

    我正在使用 twilio sdk 将短信验证与我的 Android 应用程序集成 twilio 要求我注册我的应用程序的哈希签名 但生成哈希签名的方法不起作用 总是说它是无效的哈希签名 这是 twilio 想要哈希签名的路径 用户在 and
  • Eclipse [EclEmma] 中的覆盖排除不起作用?

    根据这个帖子 https stackoverflow com questions 37004345 how to exclude classes from the coverage calculation in eclemma withou
  • 使用 Python 请求从本地 url 获取文件?

    我正在使用Python的requests http docs python requests org en latest index html我的应用程序的一种方法中的库 该方法的主体如下所示 def handle remote file