1. 程式人生 > >os、os.path 模組中關於檔案、目錄常用的函式使用方法

os、os.path 模組中關於檔案、目錄常用的函式使用方法

我們第一節課就講過了,Python是跨平臺的語言,也即是說同樣的原始碼在不同的作業系統不需要修改就可以同樣實現。

因此Python的作者就倒騰了OS模組這麼一個玩意兒出來,有了OS模組,我們不需要關心什麼作業系統下使用什麼模組,OS模組會幫你選擇正確的模組並呼叫。

os模組中關於檔案/目錄常用的函式使用方法

函式名

使用方法

getcwd() 返回當前工作目錄
chdir(path) 改變工作目錄
listdir(path='.') 列舉指定目錄中的檔名('.'表示當前目錄,'..'表示上一級目錄)
mkdir(path) 建立單層目錄,如該目錄已存在丟擲異常
makedirs(path) 遞迴建立多層目錄,如該目錄已存在丟擲異常,注意:'E:\\a\\b'和'E:\\a\\c'並不會衝突
remove(path) 刪除檔案
rmdir(path) 刪除單層目錄,如該目錄非空則丟擲異常
removedirs(path) 遞迴刪除目錄,從子目錄到父目錄逐層嘗試刪除,遇到目錄非空則丟擲異常
rename(old, new) 將檔案old重新命名為new
system(command) 執行系統的shell命令
walk(top) 遍歷top路徑以下所有的子目錄,返回一個三元組:(路徑, [包含目錄], [包含檔案])【具體實現方案請看:第30講課後作業^_^】

以下是支援路徑操作中常用到的一些定義,支援所有平臺

os.curdir 指代當前目錄('.')
os.pardir 指代上一級目錄('..')
os.sep 輸出作業系統特定的路徑分隔符(Win下為'\\',Linux下為'/')
os.linesep 當前平臺使用的行終止符(Win下為'\r\n',Linux下為'\n')
os.name 指代當前使用的作業系統(包括:'posix',  'nt', 'mac', 'os2', 'ce', 'java')

os.path模組中關於路徑常用的函式使用方法

函式名

使用方法

basename(path) 去掉目錄路徑,單獨返回檔名
dirname(path) 去掉檔名,單獨返回目錄路徑
join(path1[, path2[, ...]]) 將path1, path2各部分組合成一個路徑名
split(path) 分割檔名與路徑,返回(f_path, f_name)元組。如果完全使用目錄,它也會將最後一個目錄作為檔名分離,且不會判斷檔案或者目錄是否存在
splitext(path) 分離檔名與副檔名,返回(f_name, f_extension)元組
getsize(file) 返回指定檔案的尺寸,單位是位元組
getatime(file) 返回指定檔案最近的訪問時間(浮點型秒數,可用time模組的gmtime()或localtime()函式換算)
getctime(file) 返回指定檔案的建立時間(浮點型秒數,可用time模組的gmtime()或localtime()函式換算)
getmtime(file) 返回指定檔案最新的修改時間(浮點型秒數,可用time模組的gmtime()或localtime()函式換算)

以下為函式返回 True 或 False

exists(path) 判斷指定路徑(目錄或檔案)是否存在
isabs(path) 判斷指定路徑是否為絕對路徑
isdir(path) 判斷指定路徑是否存在且是一個目錄
isfile(path) 判斷指定路徑是否存在且是一個檔案
islink(path) 判斷指定路徑是否存在且是一個符號連結
ismount(path) 判斷指定路徑是否存在且是一個掛載點
samefile(path1, paht2) 判斷path1和path2兩個路徑是否指向同一個檔案

Python os.walk() 方法

概述

os.walk() 方法用於通過在目錄樹中游走輸出在目錄中的檔名,向上或者向下。

os.walk() 方法是一個簡單易用的檔案、目錄遍歷器,可以幫助我們高效的處理檔案、目錄方面的事情。

在Unix,Windows中有效。

語法

walk()方法語法格式如下:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

引數

  • top -- 是你所要遍歷的目錄的地址, 返回的是一個三元組(root,dirs,files)。

    • root 所指的是當前正在遍歷的這個資料夾的本身的地址
    • dirs 是一個 list ,內容是該資料夾中所有的目錄的名字(不包括子目錄)
    • files 同樣是 list , 內容是該資料夾中所有的檔案(不包括子目錄)
  • topdown --可選,為 True,則優先遍歷 top 目錄,否則優先遍歷 top 的子目錄(預設為開啟)。如果 topdown 引數為 True,walk 會遍歷top資料夾,與top 資料夾中每一個子目錄。

  • onerror -- 可選, 需要一個 callable 物件,當 walk 需要異常時,會呼叫。

  • followlinks -- 可選, 如果為 True,則會遍歷目錄下的快捷方式(linux 下是 symbolic link)實際所指的目錄(預設關閉)。

返回值

該方法沒有返回值。

例項

以下例項演示了 walk() 方法的使用:

import os
>>> for root, dirs, files in os.walk("C:\\Users\\XiangyangDai\\Desktop\\22", topdown=False):
    print(root,'\t' ,dirs,'\t' ,files)

    
C:\Users\XiangyangDai\Desktop\22\1\12      []      ['3.txt']
C:\Users\XiangyangDai\Desktop\22\1      ['12']      ['3.txt']
C:\Users\XiangyangDai\Desktop\22      ['1']      ['3.txt']