stat在python中 stat模組介面

2021-10-13 06:39:51 字數 1750 閱讀 2029

python的stat模組定義了一組解釋函式,這些函式專門用來解釋 os.stat(), os.lstat(), os.fstat() 這三個函式返回的模式資訊(st_mode)(這三個stat函式的具體資訊,請參考:os.stat()函式的用法)。

引用stat模組

由於stat模組中的函式都是大寫字母,比較特別,引用stat模組,建議用這個方式:

from stat import *

直接把stat模組中的名字匯入當前的命名空間(namespace)。

各種s_is*函式

按照剛才的方式引入stat模組後,我們就可以在當前的命名空間中,直接呼叫stat模組提供的函式。

s_isdir(mode),判斷是否為目錄。

s_ischr(mode), 判斷是否為字元裝置檔案。

s_isblk(mode),判斷是否為塊裝置檔案。

s_isreg(mode),判斷是否為普通檔案。

s_isfifo(mode), 判斷是否為fifo檔案(命名管道)。

s_islnk(mode), 判斷是否為符號鏈結(軟鏈結)檔案。(os.path.islink函式跟s_islnk函式一樣,都是用來判斷符號鏈結檔案的,不適用於硬鏈結檔案。硬鏈結和軟鏈結的區別)

s_issock(mode), 判斷是否為socket檔案。

s_isdoor(mode),

s_isport(mode),

s_iswht(mode),

以上函式的使用很簡單,舉例如下:

>>> os.listdir()

['test.txt']

>>> fs = os.stat('test.txt')

>>> s_isdir(fs.st_mode)

false

>>> s_isreg(fs.st_mode)

true

>>> s_issock(fs.st_mode)

false

>>> s_islnk(fs.st_mode)

false

其它函式

s_imode(mode), 這個函式返回mode資訊中許可權bit,這些bit能夠被用在os.chmod函式中作為入參。

s_ifmt(mode), 這個函式返回mode資訊中的檔案型別,這個型別值可以用在上面的那些s_is*函式中。

filemode(mode), 函式返回乙個這樣的字串:'-rwxrwxrwx'。

>>> os.listdir()

['test.txt']

>>> fs = os.stat('test.txt')

>>> s_imode(fs.st_mode)

>>> oct(s_imode(fs.st_mode))

'0o664'

>>> s_ifmt(fs.st_mode)

>>> s_isdir(s_ifmt(fs.st_mode))

false

>>> s_isreg(s_ifmt(fs.st_mode))

true

>>> s_issock(s_ifmt(fs.st_mode))

false

>>> s_islnk(s_ifmt(fs.st_mode))

false

>>> filemode(fs.st_mode)

'-rw-rw-r--'

許可權標誌位

stat模組中有一組許可權標誌位,一般是在os.chmod()函式中被用到。這部分內容詳情,請參考:os.chmod()函式的用法。

-- eof --

Linux檔案中的stat結構

結構體stat linux檔案系統以塊為單位儲存資訊,為了找到某乙個檔案所在的儲存空間的位置用乙個資料結構來對每個檔案進行索引,而stat顯示的就是該結構體資訊,下面我們可以來看下這個結構體。struct stat mode t st mode 檔案對應的模式,檔案,目錄等 ino t st ino...

Vuex中getters動態獲取state的值

在做專案時,getters裡有很多冗餘 但是仔細一看可以根據引數來解決,於是決定使用傳參來進行獲取,減少 冗餘。需求 在getters裡能夠根據值動態獲取到people的元素。經過多次嘗試,最終得到下面的 state.js 如下 export default,getters.js 如下 const ...

python中否定for 在python中否定函式

有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...