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 xpath获取页面注释的方法
Jan 14 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 Python
django框架auth模块用法实例详解
Dec 10 Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 Python
python 数据类型强制转换的总结
Jan 25 Python
解决Pycharm 运行后没有输出的问题
Feb 05 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
Feb 25 Python
解决Python import .pyd 可能遇到路径的问题
Mar 04 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 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 URL编码解码函数代码
2009/03/10 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
php操作MongoDB类实例
2015/06/17 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
php数组和链表的区别总结
2019/09/20 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
python简单读取大文件的方法
2016/07/01 Python
Python 异常处理的实例详解
2017/09/11 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
通信工程专业毕业生推荐信
2013/12/25 职场文书
学校国庆节活动总结
2015/03/23 职场文书
通知书大全
2015/04/27 职场文书
领导干部失职检讨书
2015/05/05 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android