案例:
在某項目中,需要獲取文件狀態,如:
- 文件的類型(普通文件、目錄、符合連接、設備文件)
- 文件的訪問權限
- 文件最后 訪問、修改、節點狀態 時間
- 普通文件大小
- ……
如何解決?
方法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'))