Python學習(九)IO 編程 —— 檔案夾及檔案操作

來源:互聯網
上載者:User

標籤:

Python 檔案夾及檔案操作

   

    我們經常會與檔案和目錄打交道,對於這些操作,python可以使用 os 及 shutill 模組,其中包含了很多操作檔案和目錄的函數。這邊,僅介紹通常會用到的方法。

    os 可以操作簡單的檔案夾及檔案操作,引入用  import os,可用  help(os)  或是  dir(os)  查看其用法。注意有些函數在os模組中,有的是在os.path模組中。

    shutil 模組提供了大量的檔案的進階操作。特別針對檔案拷貝和刪除,主要功能為目錄和檔案操作以及壓縮操作。須引入 import shutil  ,具體 help。

 

    可先在 D:\ 下建立檔案夾 Python_os , 再在其下建立檔案夾 os, 再在其下建立 test.txt;之後的 os 樣本會在該檔案夾下操作

      

  判斷路徑或檔案

    os.path.isabs(...)      # 判斷是否絕對路徑

    os.path.exists(...)     # 判斷是否真實存在

    os.path.isdir(...)       # 判斷是否是個目錄

    os.path.isfile(...)       # 判斷是否是個檔案

  注意:   把兩個路徑合成一個時,不要直接拼字串,而要通過os.path.join()函數,這樣可以正確處理不同作業系統的路徑分隔字元。在Linux/Unix/Mac下,os.path.join()返回這樣的字串:    part-1/part-2

Try

      而Windows下會返回這樣的字串:  part-1\part-2

 1 import os 2 import shutil 3  4 file_dir = "D:\\Python_os\\os"                          # 注意 \\ ;windows 下是這麼表示的;Linux 和 Mac 是 / 5 file_name = "test.txt" 6 file_abs = os.path.join(file_dir, file_name)            # os.path.join(...) 表示路徑連結 7  8  9 ‘‘‘判斷路徑或檔案‘‘‘10 print (1,os.path.isabs(file_dir))                       # 判斷是否絕對路徑11 print (2,os.path.isabs(file_name))                        12 print (3,os.path.isabs(file_abs))                        13 print (4,os.path.exists(file_abs))                      # 判斷是否真實存在14 print (5,os.path.exists(os.path.join(file_dir,"xxx")))                15 print (6,os.path.isdir(file_dir))                       # 判斷是否是個目錄16 print (7,os.path.isdir(file_abs))        17 print (8,os.path.isfile(file_dir))                      # 判斷是否是個檔案18 print (9,os.path.isfile(file_abs))        

 

 

     運行結果: 

 

  路徑名、檔案名稱分隔

    os.path.split(...)            # 分隔目錄和檔案名稱/檔案夾名         

    os.path.splitdrive(...)        # 分隔盤符(windows系統)     

    os.path.splitext(...)           # 分隔檔案和副檔名

      運行結果:  

      這些合并、拆分路徑的函數並不要求目錄和檔案要真實存在,它們只對字串進行操作。

 

  工作目錄及建立檔案夾操作

    os.path.getcwd()      # 擷取當前工作目錄

    os.path.chdir(...)      # 改變工作目錄

    os.path.listdir(...)     # 列出目錄下的檔案

    os.path.chdir(...)      # 建立單個目錄        注意:建立多級用 os.makedirs()

    os.path.listdir(...)     # 建立多級目錄

 1 import os 2  3 file_dir = "D:\\Python_os\\os"     4  5 print (os.getcwd())                                # 擷取當前工作目錄 6 os.chdir(file_dir)                                 # 改變工作目錄 7 print (os.getcwd())     8 print (os.listdir(file_dir))                       # 列出當前工作目錄的所有檔案 Python2 不支援 os.listdir()    Python3 會列出當前工作目錄下的所有檔案       9 os.mkdir("test_mkdir")                             # 在當前工作目錄下建立檔案夾 test_mkdir;注意不可存在相同檔案夾,不然會報錯10 os.makedirs("test_mkdir\\test1")11 os.chdir(".\\test_mkdir")                          # . 表示本級目錄; .. 表示上級目錄12 print (os.getcwd())    13 for i in range(2,6):                               # 使用for迴圈等,可方便的建立多個檔案夾14     dir_name = "test" + str(i)15     os.mkdir(dir_name)    

     在執行了上述執行個體代碼後,os 檔案夾中建立了空的 test_mkdir 檔案夾,而 test_dir 檔案夾下也建立出了 test1 至 test5 的空檔案夾

       

 

    建立檔案夾可能會出錯,原因具體有:(1) path 已存在時(不管是檔案還是檔案夾)  (2) 磁碟機不存在  (3) 磁碟已滿  (4) 磁碟是唯讀或沒有寫入權限

 

  刪除檔案夾/檔案

    os.rmdir(...)            # 刪除空檔案夾                     注意:必須為空白檔案夾  如需刪除檔案夾及其下所有檔案,需用 shutil

    os.remove(...)                   # 刪除單一檔案

    shutil.rmtree(...)               # 刪除檔案夾及其下所有檔案

    在上方樣本的檔案夾基礎上,操作刪除 test1 檔案夾 (空檔案夾可用 os.rmdir() ),刪除 test_mkdir 及其下所有檔案();範例程式碼如下

 1 import os 2 import shutil 3  4 file_dir = "D:\\Python_os\\os"                     5  6 ‘‘‘ 刪除檔案/檔案夾 ‘‘‘ 7 os.chdir(file_dir+"\\test_mkdir")                     8 print(os.getcwd())                                    # 確保當前工作目錄 9 print(os.listdir(os.getcwd()))                        # 查看當前檔案夾下所有檔案    10 os.rmdir("test1")                                     # 刪除 test1 檔案夾(空檔案夾)11 print(os.listdir(os.getcwd()))    12 os.chdir("..\\")13 print(os.getcwd())                                    # 切換到上級目錄14 print(os.listdir(os.getcwd()))15 shutil.rmtree("test_mkdir")                           # 刪除 test_mkdir 及其下所有檔案

     可見運行結果如下;產生異常的可能原因:  (1) 路徑不存在 (2) 路徑子目錄中有檔案或下級子目錄(os.rmdir) (3) 沒有操作許可權或唯讀

        

     只是刪除單一檔案,則用   os.remove("test.txt")   即可;產生異常的可能原因:  (1) 檔案不存在   (2) 對該檔案沒有操作許可權或唯讀。

     

 

  重新命名

    可對某一檔案或檔案夾重新命名   os.rename(oldfileName, newFilename)  

    在os檔案夾中建立檔案夾 test,檔案 test.txt    

1 ‘‘‘ 重新命名檔案夾/檔案 ‘‘‘2 os.chdir(file_dir)3 print(os.listdir(os.getcwd()))4 os.rename("test","test1")    5 os.rename("test.txt","test1.txt")                # 重新命名,注意需要帶副檔名6 print(os.listdir(os.getcwd()))

 

    可見運行結果如下;產生異常的可能原因:  (1) oldfilename 舊檔案名稱不存在(檔案須帶副檔名)   (2)newFilename 新檔案已經存在

    

    注意:新檔案的副檔名不能遺漏,理論上需要保持類型一致;但這也不失為改檔案類型的一種方式(相當於直接改檔案的副檔名)

    

 

 

Python學習(九)IO 編程 —— 檔案夾及檔案操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.