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编写网页爬虫脚本并实现APScheduler调度
Jul 28 Python
跟老齐学Python之关于循环的小伎俩
Oct 02 Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 Python
python正则表达式re之compile函数解析
Oct 25 Python
Python绘制的二项分布概率图示例
Aug 22 Python
python引入不同文件夹下的自定义模块方法
Oct 27 Python
Python查找文件中包含中文的行方法
Dec 19 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
PyTorch实现更新部分网络,其他不更新
Dec 31 Python
使用Keras中的ImageDataGenerator进行批次读图方式
Jun 17 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 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
基于PHP异步执行的常用方式详解
2013/06/03 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
php实现计数器方法小结
2015/01/05 PHP
php简单图像创建入门实例
2015/06/10 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
JavaScript中的事件处理
2008/01/16 Javascript
javascript 写类方式之一
2009/07/05 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
jquery中获取id值方法小结
2013/09/22 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
Vue实现选择城市功能
2017/05/27 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
整理Python中的赋值运算符
2015/05/13 Python
Python输出9*9乘法表的方法
2015/05/25 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
python正则中最短匹配实现代码
2018/01/16 Python
python返回数组的索引实例
2019/11/28 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
机械系大学毕业生推荐信
2013/11/27 职场文书
行政部主管岗位职责
2013/12/28 职场文书
财务出纳岗位职责
2014/02/03 职场文书
文秘应聘自荐书范文
2014/02/18 职场文书
政府信息公开实施方案
2014/05/09 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
2015国庆节感想
2015/08/04 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python