当前位置: 首页 > 面试题库 >

Python-使用请求将文件直接下载到内存

锺离烈
2023-03-14
问题内容

目的是从Internet下载文件,并从中创建文件对象或类似文件的文件,而无需使其接触硬盘驱动器。这仅是出于我的知识,想知道它是否可能或可行,尤其是因为我想看看是否可以绕过必须编写文件删除行的代码。

通常,这就是我从网络上下载内容并将其映射到内存的方式:

import requests
import mmap

u = requests.get("http://www.pythonchallenge.com/pc/def/channel.zip")

with open("channel.zip", "wb") as f: # I want to eliminate this, as this writes to disk
    f.write(u.content)

with open("channel.zip", "r+b") as f: # and his as well, because it reads from disk
    mm = mmap.mmap(f.fileno(), 0)
    mm.seek(0)
    print mm.readline()
    mm.close() # question: if I do not include this, does this become a memory leak?

问题答案:

这就是我最终要做的。

import zipfile 
import requests
import StringIO

u = requests.get("http://www.pythonchallenge.com/pc/def/channel.zip")
f = StringIO.StringIO() 
f.write(u.content)

def extract_zip(input_zip):
    input_zip = zipfile.ZipFile(input_zip)
    return {i: input_zip.read(i) for i in input_zip.namelist()}
extracted = extract_zip(f)


 类似资料:
  • 问题内容: 请求是一个非常不错的库。我想用它来下载大文件。问题是不可能将整个文件保留在内存中,我需要分块读取它。这是以下代码的问题 由于某种原因,它无法按这种方式工作。仍将响应加载到内存中,然后再将其保存到文件中。 更新 如果你需要一个小型客户端,可以从FTP下载大文件,则可以在此处找到它。它支持多线程和重新连接(它确实监视连接),还可以为下载任务调整套接字参数。 问题答案: 使用以下流代码,无论

  • 问题内容: 我想在单击按钮时发送“ ajax下载请求”,所以我尝试了这种方式: javascript: download.php: 但是没有按预期工作,我该怎么办?先感谢您 问题答案: 2015年4月27日更新 进入HTML5场景的是download属性。它支持在Firefox和Chrome,并很快来到IE11。根据您的需求,只要您要下载的文件与您的网站位于同一来源,就可以使用它代替AJAX请求(

  • 我正在尝试使用Selenium WebDriver自动执行文件下载功能。我正在使用谷歌浏览器,要下载的文件类型是PDF格式。当 WebDriver 单击下载(或打印)链接时,浏览器将显示 pdf 文件的预览,而不是直接下载。如何使chrome驱动程序直接下载pdf文件?我尝试了下面的代码,但没有运气 我知道这个问题已经在StackOverflow上问过了,包括这个,但这些解决方案都不适合我。 我正

  • 问题内容: 这是我的代码: 这使我可以访问csv文件。我尝试了其他方法来处理下载: 这将给csv文件一个字符串: 这将打印第一行并返回错误:_csv.Error:在未引用的字段中看到换行符 这将在每行中打印一个字母,并且不会打印出整个内容: 我的问题是:在这种情况下读取CSV文件的最有效方法是什么。以及如何下载。 谢谢 问题答案: 这应该有助于: 输出样本: 答案相关的问题: 使用此功能将csv加

  • 问题内容: 当我单击按钮时,我想发送“ ajax下载请求”,因此我尝试了这种方式: javascript: download.php: 但是没有按预期工作,我该怎么办?先感谢您 问题答案: 进入HTML5场景的是download属性。它支持在Firefox和Chrome,并很快来到IE11。根据您的需求,只要您要下载的文件与您的网站位于同一来源,就可以使用它代替AJAX请求(或使用)。 您始终可以

  • 问题内容: 我正在尝试从网站下载PDF文件并将其保存到磁盘。我的尝试因编码错误而失败,或者导致PDF空白。 我知道这是某种编解码器问题,但我似乎无法使其正常工作。 问题答案: 在这种情况下,您应该使用: 从文件: 对于非文本请求,您还可以字节形式访问响应主体: 因此,这意味着:将输出作为字符串对象返回,在下载 文本文件 时使用它。如HTML文件等 并以字节对象返回输出,在下载 二进制文件 时使用它