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中itertools模块用法详解
Sep 25 Python
python网络编程之读取网站根目录实例
Sep 30 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
pyqt5 获取显示器的分辨率的方法
Jun 18 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
Jun 28 Python
python设置随机种子实例讲解
Sep 12 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
python2和python3哪个使用率高
Jun 23 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
如何利用Python matplotlib绘制雷达图
Dec 21 Python
Python多线程 Queue 模块常见用法
Jul 04 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作的文本留言本的例子(四)
2006/10/09 PHP
PHP 中执行排序与 MySQL 中排序
2009/04/21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
JQuery 小练习(实例代码)
2009/08/07 Javascript
动态样式类封装JS代码
2009/09/02 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
js读取配置文件自写
2014/02/11 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
Vue使用.sync 实现父子组件的双向绑定数据问题
2019/04/04 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
初探TensorFLow从文件读取图片的四种方式
2018/02/06 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
python中selenium库的基本使用详解
2020/07/31 Python
实习教师自我鉴定
2013/12/09 职场文书
高一英语教学反思
2014/01/22 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
法制教育演讲稿
2014/09/10 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
学习新党章心得体会2016
2016/01/15 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python