案例:
在某項目中,需要獲取文件狀態,如:
- 文件的類型(普通文件、目錄、符合連接、設備文件)
- 文件的訪問權限
- 文件最后 訪問、修改、節點狀態 時間
- 普通文件大小
- ……
如何解決?
方法1:通過os原始接口,stat() , lstat(),fstat()
stat() 文件所有屬性
lstat() 不查看鏈接文件類型
fstat() 傳入參數為文件描敘符
#!/usr/bin/python3
import os
import stat
s = os.stat('python.PNG')
print(s)
print(bin(s.st_mode))
# 判斷文件是否為目錄
print(stat.S_ISDIR(s.st_mode))
# 判斷文件是否是普通文件
print(stat.S_ISREG(s.st_mode))
# 判斷文件權限
# 可讀,user,大於0為真
print(s.st_mode & stat.S_IRUSR)
# 可執行,user
print(s.st_mode & stat.S_IXGRP)
# 獲取文件 訪問、修改、節點狀態 時間
import time
print(time.localtime(s.st_atime))
print(time.localtime(s.st_ctime))
print(time.localtime(s.st_mtime))
# 獲取文件大小
print(s.st_size)
方法2:os.path下的方法,更簡潔
#!/usr/bin/python3
# os.path方法
import os
# 判斷文件是否為目錄
print(os.path.isdir('python.PNG'))
# 判斷文件是否是普通文件
print(os.path.isfile('python.PNG'))
# 獲取文件 訪問、修改、節點狀態 時間
import time
print(time.localtime(os.path.getatime('python.PNG')) )
print(time.localtime(os.path.getmtime('python.PNG')) )
print(time.localtime(os.path.getctime('python.PNG')) )
# 獲取文件大小
print(os.path.getsize('python.PNG'))
