Python判断对象是否为文件对象(file object)的三种方法示例
文件操作是开发中经常遇到的场景,那么如何判断一个对象是文件对象呢?下面我们总结了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 与文件对象共事的实例 Python 有一个内置函数,open,用来打开在磁盘上的文件.open 返回一个文件对象,它拥有一些方法和属性,可以得到被打开文件的信息,以及对被打开文件进行操作. >>> f = open("/music/_singles/kairo.mp3", "rb") (1) >>> f (2) <open file '/music/_singles/kairo.mp3', mode 'r
-
Python编程中的文件读写及相关的文件对象方法讲解
python文件读写 python 进行文件读写的内建函数是open或file file_hander(文件句柄或者叫做对象)= open(filename,mode) mode: 模式 说明 r 只读 r+ 读写 w 写入,先删除源文件,在重新写入,如果文件没有则创建 w+ 读写,先删除源文件,在重新写入,如果文件没有则创建(可以写入写出) 读文件: >>> fo = open("/root/a.txt") >
-
Python 读写文件和file对象的方法(推荐)
1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.txt') try: all_the_text = file_object.read( ) finally: file_object.close( ) 注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法. 2.读文
-
Python的Bottle框架中返回静态文件和JSON对象的方法
代码如下: # -*- coding: utf-8 -*- #!/usr/bin/python # filename: todo.py # codedtime: 2014-8-28 20:50:44 import sqlite3 import bottle @bottle.route('/help3') def help(): return bottle.static_file('help.html', root='.') #静态文件 @bottle.route('/json:json#[0-9
-
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
使用Python过程中,经常需要对文件和目录进行操作.所有file类/os/os.path/shutil模块时每个Python程序员必须学习的. 下面通过两段code来对其进行学习. 1. 学习 file对象 2. 学习os/os.path/shutil模块 1.file对象学习: 项目中需要从文件中读取配置参数,python可以从Json,xml等文件中读取数据,然后转换成Python的内容数据结构. 下面以Json文件为例,实现从Json文件中获取配置参数. code运行环境:python2
-
python使用内存zipfile对象在内存中打包文件示例
复制代码 代码如下: import zipfileimport StringIO class InMemoryZip(object): def __init__(self): # Create the in-memory file-like object self.in_memory_zip = StringIO.StringIO() def append(self, filename_in_zip, file_contents): '''Appe
-
Python元组及文件核心对象类型详解
元组 元组是不可变类型,以()表示,是任意对象的有序集合,同样是序列的一种,index和count方法分别是取元素,统计元素个数. 语法比如(2,3)就是一个元组.元组与列表如此类似,为何需要重复的类型,主要它提供了不变性,提供了"常数"声明.元组项虽不能修改,但是嵌套里面的列表项还是可以修改的. 文件 open内置函数创建文件对象,通过这个对象对外部文件进行操作.函数有三个参数,第一个文件路径,第二个是打开模式,打开模式有三种:'r'表示读文件,'w'表示写文件,'a'表示打开文件追
-
Python判断对象是否为文件对象(file object)的三种方法示例
文件操作是开发中经常遇到的场景,那么如何判断一个对象是文件对象呢?下面我们总结了3种常见的方法. 方法1:比较类型 第一种方法,就是判断对象的type是否为file >>> fp = open(r"/tmp/pythontab.com") >>> type(fp) <type 'file'> >>> type(fp) == file True 注意:该方法对于从file继承而来的子类不适用, 看下面的实例 class f
-
Python判断文件或文件夹是否存在的三种方法
常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try语句.pathlib模块. 1.使用os模块 os模块中的os.path.exists()方法用于检验文件是否存在. 判断文件是否存在 import os os.path.exists(test_file.txt) #True os.path.exists(no_exist_file.txt) #Fa
-
读取Java文件到byte数组的三种方法(总结)
读取Java文件到byte数组的三种方法(总结) package zs; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.Rando
-
Python计算指定日期是今年的第几天(三种方法)
今天早上和腾讯面试官进行了视频面试,由于音量和网络以及我的垃圾电脑的原因,个人感觉黄了... 最后面试官给了我一道简单的计算题:指定日期是今年的第几年 由于电脑卡到打字都打不动,我勉勉强强写了一点,虽然面试官知道了我的想法也了解我的设备情况,最后没让我写完 但是心里惭愧还是时候补齐了...话不多说回到主题吧 首先是输入的问题,个人认为分别输入年月份是一件很初级的要求,就实现了形如"2020-3-26"的字符串解析的两种方法,代码如下: def cal_date_str_spilt(da
-
python网络编程调用recv函数完整接收数据的三种方法
最近在使用python进行网络编程开发一个通用的tcpclient测试小工具.在使用socket进行网络编程中,如何判定对端发送一条报文是否接收完成,是进行socket网络开发必须要考虑的一个问题.这里,简要介绍一下判别数据接收接收完成常用的三种方法: 1.基础数据接收法: 使用基础数据接收法时,当与服务socket断开连接时,会接收到空字符串.因此,可以根据此特点,在程序中加入循环,一直接收数据,直到数据发送端关闭socket连接.适用场景:客户端和服务器的链接为短链接(即一次socket通讯
-
asp.net读取excel文件的三种方法示例
方法一:采用OleDB读取Excel文件 把Excel文件当做一个数据源来进行数据的读取操作,实例如下: 复制代码 代码如下: public DataSet ExcelToDS(string Path) { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;&
-
对python添加模块路径的三种方法总结
之前对mac os系统自带的python进行了升级,结果发现新安装的python的site-packages目录并没有加到python的系统路径中,所以在使用其他库时发现出现了缺少模块的错误. 查看python的模块路径方法是 import sys print sys.path 这个就会打印出所有的模块路径. 下边是在这个python系统路径中加入新的模块路径的三种方法: 1.添加环境变量PYTHONPATH,python会添加此路径下的模块,在.bash_profile文件中添加如下类似行:
-
Python中可以用三种方法判断文件是否存在
目录 1.使用os模块 2.使用Try语句 3. 使用pathlib模块 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try语句.pathlib模块. 1.使用os模块 os模块中的os.path.exists()方法用于检验文件是否存在. 判断文件是否存在 import os os.path.exists(test_file.txt) #True
-
php实现将数组或对象写入到文件的方法小结【三种方法】
本文实例讲述了php实现将数组或对象写入到文件的方法.分享给大家供大家参考,具体如下: php将数组或对象原样写入或保存到文件有三种方法可以实现 第一种方法是使用serialize, 第二种方法是使用print_r, 第三种方法是使用var_export, 本文章向大家介绍这三种方法是如何将数组写入到文件的,需要的朋友可以参考一下. 第一:serialize方法 使用 serialize 将数组序列化,存储在文件中:调用时,再使用 unserialize 还原. <?php $file='./c
-
在python中对变量判断是否为None的三种方法总结
三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这些时,not X为真,即无法分辨出他们之间的不同. 第三种:if not X is None; 在Python中,None.空列表[].空字典{}.空元组().0等一系列代表空和无的对象会被转换成False.除此之外的其它对象都会被转化成True. 在命令if not 1中,1便会转换为bool类型的True
随机推荐
- Swift算法之二叉树实现的方法示例
- 如何把Recordset转换成彩色的XML文件
- 又一款MVVM组件 Vue基础语法和常用指令(1)
- 正则表达式之零宽断言实例详解【基于PHP】
- Ajax::prototype 源码解读
- python requests 使用快速入门
- 解析C++中派生的概念以及派生类成员的访问属性
- C++选择排序算法实例
- JavaScript中捕获与冒泡详解及实例
- Python实现的数据结构与算法之快速排序详解
- 简单谈谈python的反射机制
- 不要使用CSS Expression的原因分析
- linux中通过文件描述符获取文件绝对路径的方法
- Python中方法链的使用方法
- javascript asp教程第二课--转义字符
- Centos7.2 编译安装方式搭建 phpMyAdmin
- IIS 7 中设置文件上传大小限制设置方法
- 基于jquery的不规则矩形的排列实现代码
- ios Plist文件配置方法
- 关于iOS 11不能定位问题的解决方法