现在的位置: 首页 > 综合 > 正文

002_015 Python 用类对象适配真实文件对象

2018年02月15日 ⁄ 综合 ⁄ 共 633字 ⁄ 字号 评论关闭

代码如下:

#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

抱歉!评论已关闭.