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中apply函数的用法实例教程
Jul 31 Python
web.py中调用文件夹内模板的方法
Aug 26 Python
python中的hashlib和base64加密模块使用实例
Sep 02 Python
Python中的descriptor描述器简明使用指南
Jun 02 Python
基础的十进制按位运算总结与在Python中的计算示例
Jun 28 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
让你Python到很爽的加速递归函数的装饰器
May 26 Python
在django中图片上传的格式校验及大小方法
Jul 28 Python
使用PyCharm进行远程开发和调试的实现
Nov 04 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 Python
keras和tensorflow使用fit_generator 批次训练操作
Jul 03 Python
基于Python实现的购物商城管理系统
Apr 27 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
cmd下运行php脚本
2008/11/25 PHP
解析PHP可变函数的经典用法
2013/06/20 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
2016/03/13 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
Three.js获取鼠标点击的三维坐标示例代码
2017/03/24 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
vue中的inject学习教程
2019/04/24 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
Python中的自省(反射)详解
2015/06/02 Python
python调用fortran模块
2016/04/08 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
舞蹈教育学专业推荐信
2013/11/27 职场文书
教师简历自我评价
2014/02/03 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
审美与表现自我评价
2015/03/09 职场文书
2015年消防工作总结
2015/04/24 职场文书
演讲比赛主持词
2015/06/29 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers