Python 判斷文件是否存在的三種方法

2021-03-02 Python開發者

(點擊上方藍字,快速關注我們)

來源:j_hao104 

my.oschina.net/jhao104/blog/1490038

如有好文章投稿,請點擊 → 這裡了解詳情

通常在讀寫文件之前,需要判斷文件或目錄是否存在,不然某些處理方法可能會使程序出錯。所以最好在做任何操作之前,先判斷文件是否存在。

這裡將介紹三種判斷文件或文件夾是否存在的方法,分別使用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)

#False

import os

os.path.exists(test_dir)

#True

 

os.path.exists(no_exist_dir)

#False

可以看出用os.path.exists()方法,判斷文件和文件夾是一樣。

其實這種方法還是有個問題,假設你想檢查文件「test_data」是否存在,但是當前路徑下有個叫「test_data」的文件夾,這樣就可能出現誤判。為了避免這樣的情況,可以這樣:

import os

os.path.isfile("test-data")

通過這個方法,如果文件」test-data」不存在將返回False,反之返回True。

即是文件存在,你可能還需要判斷文件是否可進行讀寫操作。

判斷文件是否可做讀寫操作

使用os.access()方法判斷文件是否可進行讀寫操作。

語法:

os.access(path, mode)

path為文件路徑,mode為操作模式,有這麼幾種:

os.F_OK: 檢查文件是否存在;

os.R_OK: 檢查文件是否可讀;

os.W_OK: 檢查文件是否可以寫入;

os.X_OK: 檢查文件是否可以執行

該方法通過判斷文件路徑是否存在和各種訪問模式的權限返回True或者False。

import os

if os.access("/file/path/foo.txt", os.F_OK):

    print "Given file path is exist."

 

if os.access("/file/path/foo.txt", os.R_OK):

    print "File is accessible to read"

 

if os.access("/file/path/foo.txt", os.W_OK):

    print "File is accessible to write"

 

if os.access("/file/path/foo.txt", os.X_OK):

    print "File is accessible to execute"

2.使用Try語句

可以在程序中直接使用open()方法來檢查文件是否存在和可讀寫。

語法:

open(<file/path>)

如果你open的文件不存在,程序會拋出錯誤,使用try語句來捕獲這個錯誤。

程序無法訪問文件,可能有很多原因:

所以可以使用下面的代碼來判斷文件是否存在:

try:

    f =open()

    f.close()

except FileNotFoundError:

    print "File is not found."

except PersmissionError:

    print "You don't have permission to access this file."

其實沒有必要去這麼細緻的處理每個異常,上面的這兩個異常都是IOError的子類。所以可以將程序簡化一下:

try:

    f =open()

    f.close()

except IOError:

    print "File is not accessible."

使用try語句進行判斷,處理所有異常非常簡單和優雅的。而且相比其他不需要引入其他外部模塊。

3. 使用pathlib模塊

pathlib模塊在Python3版本中是內建模塊,但是在Python2中是需要單獨安裝三方模塊。

使用pathlib需要先使用文件路徑來創建path對象。此路徑可以是文件名或目錄路徑。

path = pathlib.Path("path/file")

path.exist()

path = pathlib.Path("path/file")

path.is_file()

看完本文有收穫?請轉發分享給更多人

關注「Python開發者」,提升Python技能

相關焦點

  • [Python]文件與異常的錯誤處理
    E:\Github\python\env\Scripts\python.exe E:/Github/python/files_error/fileIO/fileIO.pyMan: Is this the right room for an argument?
  • 一文詳解Python字符串條件判斷方法
    而py最最最致命的是,我之前已經用過這個方法了,但是在實際使用的時候,我沒有用上。我大可以說,這個是粗心,就和考試的時候一樣,問什麼數字平方等於4,我只寫了個2,然後因此丟了-2那半分,但我知道,這其實就是基礎不夯實的體現。是一種憑藉直接經驗獲取知識的思維方式。畢竟python字符串判斷方法,在日常開發中,用的比較少,因此被我忽視掉了。為了避免以後再犯類似的錯誤,就趁此機會撿起爛筆頭。
  • 文科生快速入門python(十三) | 文件讀寫詳解
    除了之外【python辦公自動化(一) | chardet庫自動讀寫多編碼格式的文件】中描述的編碼錯誤外,還有忘記close()造成讀不到文件、搞混r,w,a,x模式、寫錯read, readline, readlines方法之類的常見錯誤。
  • 一文看懂Python對文件和文件夾的操作: 含os, shutil和glob模塊.Python學習面試必讀.
    wb以二進位格式打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。w+打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。wb+以二進位格式打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。a打開一個文件用於追加。
  • python3 讀取XML文件的入坑經歷
    需要讀取xml裡的路徑,依次處理圖片所以,開始python xml文件的操作開始時使用命令行的形式,讀取xml文件的路徑,然後判斷文件是否存在,存在,就解析。 問題分析命令行參數傳錯了,xml_file_path = sys.argv[1],才是傳入的xml文件的路徑,如果是sys.argv[0],那麼,是執行的python文件本身!!所以,文件存在,但是,文件解析失敗!!並且是第一行第一列解析失敗!!,最後我把XML文件刪的只剩一行,依舊解析失敗!!開始懷疑人品了。文件編碼,怎麼改都不行!
  • python文件讀寫的基本操作
    保存數據在生活中也是非常常見的,比如你的微信,QQ帳號密碼就是保存在一個固定的地方的,每次登錄時就會通過比較對錯,來判斷是否可以登錄。創建一個文件使用電腦創建一個文件非常簡單,滑鼠右鍵新建就可以搞定,用程序創建也非常簡單,下面一行代碼就搞定。
  • Python讀取ini配置文件
    python看過我之前文章的同學可能知道,最近一直在做百度語音合成的功能,進一步的延伸功能,此次是批量生成文章的語音文件。目前是使用python來實現的,將代碼打包成了exe文件,方便客戶進行測試。下面說一下配置文件,本次直說ini格式的配置文件。創建ini文件在目錄中創建.ini文件,我們以config.ini文件名為例。進行創建。在創建好的文件內編寫配置信息。
  • 如何使用python語言代碼實現判斷是否為回文
    工具Visual Studio 2019python運行環境技術python回文回文,是按照中心對稱,從左到右或從右到左,字符串都一樣的。如果想要python語言代碼實現回文判斷,若為回文,列印回文,否則列印不是回文。
  • Python基礎之原生數據類型、判斷和循環、函數和文件操作合集
    In [31]: s1.split('t')Out[31]: ['nai', 'angmao']In [32]: s1.split()Out[32]: ['naitangmao']判斷一個元素是否存在於字符串中
  • python筆記4-遍歷文件夾目錄os.walk()
    並且找出某個後綴的所有文件一、walk功能簡介1.os.walk() 方法用於通過在目錄樹種遊走輸出在目錄中的文件名,向上或者向下。2.walk()方法語法格式如下:os.walk(top,topdown=True,onerror=None, followlinks=False)- top 根目錄下的每一個文件夾(包含它自己), 產生3-元組 (dirpath, dirnames, filenames)【文件夾路徑, 文件夾名字, 文件名】。
  • python學習之三種等待時間
    python學習之三種等待時間1,強制等待:不論頁面是否加載完成,都要等待指定時間後才執行下一步,單位s,time.sleep(指定時間)2,隱形等待:頁面加載完成則執行下一步,沒有加載完成,則繼續等待直到指定時間後在執行下一步
  • python二級考試大綱內容:程序的三種控制結構
    #python#繼續學習python二級考試大綱內容:程序的三種控制結構順序結構、分支結構和循環結構這三種控制結構是編程的基礎組成部分,無論是準備考全國計算機等級考試還是單純是為了興趣而學習python,都必須掌握。
  • Python讀入文件報錯的處理方法
    文章導讀:本文主要 解決python在讀入文件時的報錯:ParserError:Error tokenizing data.C error:Expected x fields in line nnn,saw y。文章分為兩部分,第一部分解釋報錯的意思,定位原因;第二部分給出解決方法。
  • Python基礎教程判斷(if)語句
    判斷是否滿 18 歲 (>=)如果滿 18 歲,允許進網吧嗨皮```python1.判斷是否滿 18 歲if 語句以及縮進部分的代碼是一個完整的代碼塊if age >= 18: print("可以進網吧嗨皮……")3. 思考!- 無論條件是否滿足都會執行print("這句代碼什麼時候執行?")
  • python讀寫文件
    今天我們就以這幾個需求為背景來看看python是如何讀寫文件的。基本概念介紹我們知道python中一切都是對象,「文件」也不例外。下面的實驗可以看出文件是名叫『_io.TextIOWrapper』的class。
  • Python字符串的45個方法詳解
    "): print("該文件是文本文件")elif file.endswith(("AVI","WMV","RM")): print("該文件為視頻文件")else: print("文件格式未知 20、startswith()
  • Python中判斷數字是否為質數的實例講解
    在本篇文章裡小編給大家分享了關於python中判斷數字是否為質數的實例講解內容,有興趣的朋友們可以學習下。
  • 如何判斷一個正整數是否為質數的三種方法 | 附Python程序
    張益唐在不依賴未經證明推論的前提下,發現存在無窮多差小於7000萬的素數對,從而在孿生素數猜想這個重要問題的道路上前進了一大步。如何判斷一個正整數是否為質數?以下介紹三種判別質數的方法,並附上相應的Python程序,供有興趣的同學參考。
  • dos命令if教程,if exist判斷文件是否存在,bat腳本批處理代碼
    上篇文章我們學習了if判斷變量是否相等和比較大小操作,今天我們學習if exist判斷文件是否存在,它經常用於批處理裡邊進行一些判斷操作。輸入命令if /?,能看到if的介紹和參數,今天我們使用這個,IF [NOT] EXIST filename command,下邊我開始寫bat批處理腳本代碼和大家講解一下。
  • python使用with as處理文件的讀寫
    在python中使用with語句,可以自動調用close()方法,同時也解決了異常問題。with open('test.txt','w') as f:f.write('Hello, python!')python文件讀寫模式:r:以只讀方式打開文件,指針放到文件的開頭。rb:以二進位格式打開文件用於只讀,指針放到文件的開頭。r+:打開文件用於讀寫,指針放到文件的開頭。