【问题标题】:IO error when attempting to download images from url尝试从 url 下载图像时出现 IO 错误
【发布时间】:2010-12-09 21:35:27
【问题描述】:

执行以下行时发生错误,

output[counter] = h['url']
name = '%(name)s%(#)03u' % {'title': user_input, '#': counter}
urllib.urlretrieve(output[counter], name)
counter += 1

>>>> File "/base/python_runtime/python_dist/lib/python2.5/urllib.py", line 225, in retrieve
>>> tfp = open(filename, 'wb')
>>> IOError: invalid mode: wb

由于 google 的应用引擎不支持 2.5 以上的任何版本,我之前遇到了一些错误,不确定是否是导致它的原因。

感谢您的帮助!


在这里找到了我要找的东西,对于在发布此问题之前没有找到它,我深表歉意。

Python app engine: how to save a image?

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    Python 将在您提供的替换字典中查找“名称”,而不是“标题”

    name = '%(name)s%(#)03u' % {'name' : 'title', '#' : counter}
    

    【讨论】:

    • 'title' 实际上是真实代码中的一个 var,我更改了它,因为我虽然没关系...错误来自 urllib.urlretrieve(output[counter], name) 行但是想知道为什么...
    【解决方案2】:

    看起来 urlfetch 正在尝试打开一个临时文件来存储 urlfetch 的结果。生成的页面是否很大?我们最近将 URLFetch 操作的最大大小从 1MB 增加到 32MB,因此这可能是一个新错误,只有在大响应时才可见。 Please file a bug。同时,您应该直接使用URLFetch API,这样既灵活又不存在这个问题。

    【讨论】:

    • 它应该很大,我正在尝试从一个 url 地址保存图像,图像大小各不相同,但应该远小于 32MB。谢谢您的帮助。我将研究 URLFetch API。
    • 我不确定是否可以使用 URLFetch 来完成这项工作。我正在尝试将图像从其 HTML 地址保存到文件中。同样的代码在本地执行时也能正常工作不知道是什么问题,没有太多经验。
    • @evelima 在 App Engine 上,httplib 和 urllib(2) 是 URLFetch 的包装器。你可以用其中任何一个做的任何事情都可以用 URLFetch 完成。但是,如果您尝试写入本地文件,则无法在 App Engine 上执行此操作 - 您需要改为写入数据存储区。 App Engine 应用程序可以在整个机器集群上提供服务,因此即使允许写入本地磁盘也是没有意义的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2017-10-17
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多