0
根據documentationurllib2.urlopen()
返回文件類型對象。爲什麼我不能在urllib2.urlopen()上使用文件方法返回
由於它是一個文件類型的對象,我期望能夠讀/寫/尋找等等。
但似乎工作的唯一文件方法是read()
。下面我有一個小小的示例代碼,它將輸出寫爲註釋。
import urllib2
page = urllib2.urlopen("http://www.perdu.com")
# OK, prints page contents
print page.read()
# Produces empty string (because EOF), what if I need to print the contents multiple times?
print page.read()
# AttributeError: addinfourl instance has no attribute 'seek'
print page.seek(0)
# AttributeError: addinfourl instance has no attribute 'write'
page.write("hello")
我試圖理解爲什麼我不能把它不支持seek
和write
方法,如文件類型的對象應該的,什麼是另類?
我想對urlopen
返回的網頁內容做一些操作,例如追加一些文字。
我需要保持這樣的文件類型的對象(即:我會堵塞這個修改後的網頁,以只接受一個文件類型對象的方法)
也許['StringIO'](https://docs.python.org/2/library/stringio.html)對象可以幫助你嗎? – 2014-10-28 01:20:03
這是一個*類似文件的對象。這實際上意味着什麼取決於誰在執行它的意思。在網絡流上搜索()'沒有任何意義,所以這是行不通的。在HTTP *響應中'write()'也沒有意義。*所以這也不起作用。基本上,它的行爲足夠像一個文件,你可以像讀一樣。在其他情況下,「類似文件」可能意味着其他事情。 – kindall 2014-10-28 01:22:10