最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python判斷對象是否為文件對象(file object)的三種方法示例

 更新時間:2019年04月26日 10:29:02   投稿:zx  
這篇文章主要介紹了Python判斷對象是否為文件對象(file object)的三種方法示例,https://www.pythontab.com/html/2018/pythonhexinbiancheng_1015/1362.html

文件操作是開發(fā)中經(jīng)常遇到的場景,那么如何判斷一個對象是文件對象呢?下面我們總結(jié)了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)

結(jié)果:

<class '__main__.fileDetect'>

方法2:isinstance方法

要判斷一個對象是否為文件對象(file object),可以直接用isinstance()判斷。

如下代碼中,open得到的對象fp類型為file,當(dāng)然是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中,類型并沒有那么重要,重要的是”接口“。如果它走路像鴨子,叫聲也像鴨子,我們就認(rèn)為它是鴨子(起碼在走路和叫聲這樣的行為上)。

按照這個思路我們就有了第3中判斷方法:判斷一個對象是否具有可調(diào)用的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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實現(xiàn)遍歷數(shù)據(jù)庫并獲取key的值

    Python實現(xiàn)遍歷數(shù)據(jù)庫并獲取key的值

    本文給大家分享的是Python實現(xiàn)遍歷數(shù)據(jù)庫并獲取key的值的方法,主要是使用for循環(huán)來實現(xiàn),有需要的小伙伴可以參考下。
    2015-05-05
  • python結(jié)合多線程爬取英雄聯(lián)盟皮膚(原理分析)

    python結(jié)合多線程爬取英雄聯(lián)盟皮膚(原理分析)

    多線程是為了同步完成多項任務(wù),不是為了提高運行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。這篇文章主要介紹了python爬取英雄聯(lián)盟皮膚結(jié)合多線程的方法,需要的朋友可以參考下
    2021-05-05
  • python實現(xiàn)將list拼接為一個字符串

    python實現(xiàn)將list拼接為一個字符串

    這篇文章主要介紹了python實現(xiàn)將list拼接為一個字符串方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python制作小說爬蟲實錄

    python制作小說爬蟲實錄

    本文給大家介紹的是作者所寫的第一個爬蟲程序的全過程,從構(gòu)思到思路到程序的編寫,非常的細(xì)致,有需要的小伙伴可以參考下
    2017-08-08
  • import的本質(zhì)解析

    import的本質(zhì)解析

    import是我們經(jīng)常使用的功能,方法大家也都會。雖然用的多,但它的本質(zhì)我們似乎沒有好好的了解過。本文就import的本質(zhì)解析,向大家作了介紹,需要的朋友可以參考下。
    2017-10-10
  • Python自定義模塊的創(chuàng)建與使用

    Python自定義模塊的創(chuàng)建與使用

    這篇文章主要給大家介紹了關(guān)于Python自定義模塊創(chuàng)建與使用的相關(guān)資料,文中還給大家分享了python打包用戶自定義模塊的方法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 深入理解python?生成器、迭代器、動態(tài)新增屬性及方法

    深入理解python?生成器、迭代器、動態(tài)新增屬性及方法

    這篇文章主要介紹了python?生成器、迭代器、動態(tài)新增屬性及方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 詳解Python的Lambda函數(shù)與排序

    詳解Python的Lambda函數(shù)與排序

    本篇文章主要是介紹了Python的Lambda函數(shù)與排序,簡單的介紹了Lambda函數(shù)的用法和排序,有需要的朋友可以了解一下。
    2016-10-10
  • Python接口測試文件上傳實例解析

    Python接口測試文件上傳實例解析

    這篇文章主要介紹了Python接口測試文件上傳實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • 一文教你將Visual Studio Code變成Python開發(fā)神器

    一文教你將Visual Studio Code變成Python開發(fā)神器

    Visual Studio Code 是一款功能強大、可擴展且輕量級的代碼編輯器,經(jīng)過多年的發(fā)展,已經(jīng)成為 Python 社區(qū)的首選代碼編輯器之一。本文將為大家介紹一下如何將Visual Studio Code變成Python開發(fā)神器,需要的可以參考一下
    2022-07-07

最新評論

图片| 手游| 咸丰县| 留坝县| 齐河县| 肥西县| 社旗县| 海晏县| 溆浦县| 北宁市| 锦屏县| 永胜县| 满城县| 广宗县| 汪清县| 鄂托克前旗| 汝南县| 阿瓦提县| 龙川县| 勐海县| 巴里| 团风县| 武冈市| 济南市| 宜昌市| 南城县| 永泰县| 孙吴县| 体育| 肇州县| 崇礼县| 剑阁县| 辽阳市| 晋宁县| 揭阳市| 平阴县| 通海县| 清水河县| 府谷县| 德庆县| 巍山|