0

我正在尝试从两个网站下载多个图像文件,并且正在使用多处理模块进行,希望缩短所需时间(同步大约需要五分钟)。这是在单独进程中执行的代码:

def _get_image(self):
        if not os.path.isdir(self.file_path + self.folder):
            os.makedirs(self.file_path + self.folder)

        rand = Random()
        rand_num = rand.randint(0, sys.maxint)
        self.url += str(rand_num)
        opener = urllib.FancyURLopener()
        opener.retrieve(self.url, self.file_path + self.folder + '/' + str(rand_num) + '.jpg')

上面的代码在单独的进程中执行并且工作正常,但我希望它不要在下载每个文件后立即保存,而是在进程执行结束时保存。下载后,我希望将它们存储在某个内部列表或字典中……遗憾的是,FancyURLopener 不允许将文件存储在内存中,并坚持在下载后立即将它们写入磁盘。有没有像 FancyURLopener 这样的工具,但没有磁盘写入功能?

4

1 回答 1

1

URLopener.open()返回类似文件。您可以read()将数据作为字节字符串检索,然后将其存储在您想要的任何位置。

为什么你首先需要一个URLopener?简单的怎么样urllib2.urlopen()

于 2013-02-13T20:01:27.777 回答