• Python 如何判断对象是否是文件对象


    Python2

    Python2 有一种比较可靠的方式就是判断对象的类型是否是file类型。因此可以使用type函数或者isinstance函数实现。

    type

    当然type函数无法对继承得来的子类起作用

    >>> f = open('./text', 'w')
    >>> type(f)
    <type 'file'>
    >>> type(f) == file
    True
    
    >>> class MyFile(file):
    ...     pass
    ...
    >>> mf = MyFile('./text')
    >>> type(mf)
    <class '__main__.MyFile'>
    >>> type(mf) == file
    False
    

    isinstance

    isinstancne是推荐的判断类型时方法,通常情况下都应该选择此方法。isinstance也可以对子类起作用。

    >>> f = open('./text', 'w')
    >>> isinstance(f, file)
    True
    
    >>> class MyFile(file):
    ...     pass
    ...
    >>> mf = MyFile('./text')
    >>> isinstance(mf, file)
    True
    

    Python3

    在 Python3 中,官方取消了file这一对象类型,使得 python2 中的判断方法无法在 Python3 中使用。

    因此在 Python3 中只能通过鸭子类型的概念判断对象是否实现了可调用的``read, write, close方法, 来判断对象是否是一个文件对象了。

    def isfilelike(f):
        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
    

    当然这个方法也可以在 python2 中使用

  • 相关阅读:
    configure: error: no acceptable cc found in $PATH
    SQL server的错误日志导致服务器C盘满
    域名/IP 正则表达式
    rpm 基本命令
    VB TO C#
    yum 的基本操作
    在服务器上怎么检查一个网站的在线连接数有多大。
    MSSQL2005不能连接远程有非法字符密码的数据库
    按账目类型和日期查看账目
    梦断代码读书笔记(二)
  • 原文地址:https://www.cnblogs.com/leisurelylicht/p/Python-ru-he-pan-duan-dui-xiang-shi-fou-shi-wen-ji.html
Copyright © 2020-2023  润新知