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 相关文章推荐
pycharm 使用心得(四)显示行号
Jun 05 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
常用python编程模板汇总
Feb 12 Python
Python多线程threading和multiprocessing模块实例解析
Jan 29 Python
python实现微信发送邮件关闭电脑功能
Feb 22 Python
python之拟合的实现
Jul 19 Python
微信公众号token验证失败解决方案
Jul 22 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
python实现的config文件读写功能示例
Sep 24 Python
Django使用rest_framework写出API
May 21 Python
在keras中model.fit_generator()和model.fit()的区别说明
Jun 17 Python
Python异常类型以及处理方法汇总
Jun 05 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下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
PHP取整数函数常用的四种方法小结
2012/07/05 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
微信小程序开发探究
2016/12/27 Javascript
javascript遍历json对象的key和任意js对象属性实例
2017/03/09 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
2018/12/13 Javascript
python读取word文档的方法
2015/05/09 Python
python requests 使用快速入门
2017/08/31 Python
浅析Git版本控制器使用
2017/12/10 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
virtualenv介绍及简明教程
2020/06/23 Python
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
社区活动邀请函范文
2014/01/29 职场文书
建筑安全责任书范本
2014/07/24 职场文书
大学生村官个人总结
2015/02/15 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python