Python判断对象是否为文件对象(file object)的三种方法示例


Posted in Python onApril 26, 2019

文件操作是开发中经常遇到的场景,那么如何判断一个对象是文件对象呢?下面我们总结了3种常见的方法。

方法1:比较类型

第一种方法,就是判断对象的type是否为file

>>> fp = open(r"/tmp/pythontab.com")
>>> type(fp)
<type 'file'>
>>> type(fp) == file
True

注意:该方法对于从file继承而来的子类不适用, 看下面的实例

class fileDetect(file):
  pass # 中间代码无所谓,直接跳过不处理
fp2 = fileDetect(r"/tmp/pythontab.com")
fileType = type(fp2)
print(fileType)

结果:

<class '__main__.fileDetect'>

方法2:isinstance方法

要判断一个对象是否为文件对象(file object),可以直接用isinstance()判断。

如下代码中,open得到的对象fp类型为file,当然是file的实例,而filename类型为str,自然不是file的实例

>>> isinstance(fp, file)
True
>>> isinstance(fp2, file)
True
>>> filename = r"/tmp/pythontab.com"
>>> type(filename)
<type 'str'>
>>> isinstance(filename, file)
False

方法3:推测法

在python中,类型并没有那么重要,重要的是”接口“。如果它走路像鸭子,叫声也像鸭子,我们就认为它是鸭子(起码在走路和叫声这样的行为上)。

按照这个思路我们就有了第3中判断方法:判断一个对象是否具有可调用的read,write,close方法(属性)。

参看:http://docs.python.org/glossary.html#term-file-object

def isfile(f):
  """
  Check if object 'f' is readable file-like 
that it has callable attributes 'read' , 'write' and 'close'
  """
try:
if isinstance(getattr(f, "read"), collections.Callable) \
and isinstance(getattr(f, "write"), collections.Callable) \
and isinstance(getattr(f, "close"), collections.Callable):
return True
except AttributeError:
pass
return False

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的一个火车票转让信息采集器
Jul 09 Python
python实现简单的计时器功能函数
Mar 14 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 Python
python 链接和操作 memcache方法
Mar 04 Python
python矩阵的转置和逆转实例
Dec 12 Python
python画图--输出指定像素点的颜色值方法
Jul 03 Python
浅析Windows 嵌入python解释器的过程
Jul 26 Python
python 解压、复制、删除 文件的实例代码
Feb 26 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
Jul 01 Python
如何在python中判断变量的类型
Jul 29 Python
python unichr函数知识点总结
Dec 16 Python
如何用Python徒手写线性回归
Jan 25 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
Apr 26 #Python
浅谈python新式类和旧式类区别
Apr 26 #Python
Python静态类型检查新工具之pyright 使用指南
Apr 26 #Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 #Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 #Python
Python 2/3下处理cjk编码的zip文件的方法
Apr 26 #Python
实例详解Matlab 与 Python 的区别
Apr 26 #Python
You might like
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
PHP分页类集锦
2014/11/18 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
Javascript 刷新全集常用代码
2009/11/22 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
python 实现二维列表转置
2019/12/02 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
办公设备采购方案
2014/03/16 职场文书
初中生操行评语大全
2014/04/24 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
物流管理专业求职信
2014/05/29 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
工作散漫检讨书
2014/09/16 职场文书
婚礼新人答谢词
2015/01/04 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
股东大会通知
2015/04/24 职场文书
初中数学教学随笔
2015/08/15 职场文书
Python操作CSV格式文件的方法大全
2021/07/15 Python
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers