如何使用urllib2将URL作为File对象打开?

时间:2013-05-19 15:10:15

标签: python

以下方法返回不同的对象:

urllib2.urlopen("http://example.com/image.png")
>> <addinfourl at 148620236 whose fp = <socket._fileobject object at 0x8db0b6c>>

open("/home/me/image.png")
>> <open file '/var/www/service/provider/web/test.png', mode 'r' at 0x8da3d88>

urlopen是否可以返回open返回的相同类型的对象?我不希望它作为流返回。我想这是一个File对象

1 个答案:

答案 0 :(得分:1)

这两个与文件对象几乎相同。如果你看到official docs,他们会说“这个函数返回一个类似文件的对象,有两个额外的方法:”......

因此,您可以使用与文件对象相同的方法,例如:

myFile = urllib2.urlopen("http://example.com/image.png")
myFile.read()

对于像图像这样的东西(看起来就是你所说的),这将打印出文件的丑陋数据表示。您可以使用类似

之类的内容将其写入磁盘上的文件
with open("mySavedPNG.png",'w') as w:
    w.write(myFile.read()) # note that if you have already done myFile.read() you will need to seek back to the start of the file with myFile.seek(0)

如果您真的想在Python中管理png,请使用类似png Module

的内容