0

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

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对象

4

1 回答 1

1

两者几乎等同于一个文件对象。如果您看到官方文档,他们会说“此函数返回一个带有两个附加方法的类文件对象:”...

因此,知道了这一点,您可以使用与在文件对象上使用的方法类似的方法,例如:

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 模块之类的东西

于 2013-05-19T15:38:04.490 回答