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

この 2 つは、ファイル オブジェクトとほぼ同じです。公式ドキュメントを見ると、「この関数は、2 つの追加メソッドを持つファイルのようなオブジェクトを返します:」と書かれています...

そのため、次のように、ファイル オブジェクトで使用するものと同様のメソッドを使用できます。

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 に答える