代码如下:
#encoding=utf-8 print '中国' #用类对象适配真实文件对象 #传递一个类似文件的对象 如 urllib.urlopen给一个函数或者方法,但这个函数只接受真实的文件对象 import types,tempfile #解决方案,吧类对象写入一个临时文件,然后再传入。 CHUNK_SIZE= 16 * 1024 import os, sys def adapt_file(fileobj): if isinstance(fileobj,file): return fileobj tmpFileObj = open(r"d:\1234.txt",'wb') # tmpFileObj = tempfile.TemporaryFile() 书上代码不能用 因为 tmpFileObj不是file的实例 while True: data = fileobj.read(CHUNK_SIZE) if not data :break tmpFileObj.write(data) fileobj.close() tmpFileObj.seek(0) return tmpFileObj import urllib url=r"http://www.baidu.com/" baiduobj = urllib.urlopen(url) import marshal baidufileobj=adapt_file(baiduobj) if isinstance(baidufileobj,file): print 'fileobj'
打印结果如下:
中国
fileobj