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搭建Django应用程序步骤及版本冲突问题解决
Nov 19 Python
详解Python中的各种函数的使用
May 24 Python
利用django如何解析用户上传的excel文件
Jul 24 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
详解python如何在django中为用户模型添加自定义权限
Oct 15 Python
详解Python:面向对象编程
Apr 10 Python
Python语法分析之字符串格式化
Jun 13 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
pytorch实现从本地加载 .pth 格式模型
Feb 14 Python
python requests包的request()函数中的参数-params和data的区别介绍
May 05 Python
Python 高效编程技巧分享
Sep 10 Python
基于Python制作一副扑克牌过程详解
Oct 19 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实现MVC开发得最简单的方法――模型
2007/04/10 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
简明json介绍
2008/09/28 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
浅谈JavaScript的闭包函数
2016/12/08 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
python之Socket网络编程详解
2016/09/29 Python
Python 转义字符详细介绍
2017/03/21 Python
python实现八大排序算法(2)
2017/09/14 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
Python中文件的读取和写入操作
2018/04/27 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
python脚本开机自启的实现方法
2019/06/28 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
商务主管岗位职责
2013/12/08 职场文书
费用会计岗位职责
2014/01/01 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
开业庆典主持词
2014/03/21 职场文书
借款担保书范文
2014/05/13 职场文书
政府采购方案
2014/06/12 职场文书
大雁塔英文导游词
2015/02/10 职场文书
讲座通知范文
2015/04/23 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS