python 文件状态_Python:如何访问文件的状态
一、案例:在某些項目中,需要獲取文件的狀態
文件狀態:os.stat(path)
1、文件的類型:普通文件、目錄、符號鏈接、設備文件或管道(一般在Linux上)。。。
2、文件的訪問權限:一般為讀、寫、執行,3個權限;
3、文件的最后的訪問時間(對應read操作)、最后的修改時間(對應write操作)、最后的節點狀態更改時間(對應的chang_move、chang_name的操作)
4、獲取普通文件的大小,也就是字節數
#普通文件:如.py、.txt、.csv等;
#目錄文件:目錄d/
#符號鏈接文件:x.txt -> a.txt,也就是x.txt引用了普通文件a.txt
二、Python中如何獲取文件的狀態
方法一:系統調用
標準庫os模塊下的三個系統調用:stat、fstat、lstat,獲取文件狀態;
1)os.stat(path)、os.lstat(path)、os.fstat(fileno):獲取指定文件的狀態;
2)stat和lstat的差異:表現在對符號鏈接文件的操作,如x.txt -> a.txt:
#os.lstat('x.txt'):返回符號鏈接x.txt文件的狀態;
#os.stat('x.txt'):返回的是a.txt文件的狀態,因為stat,要跟隨符號鏈接,指向a.txt文件;
3)fstat和stat功能一樣,差異:os.fstat()操作的是文件的描述符(fileno),不是文件路徑;
方法二:快捷函數
標準庫中os.path下的一些函數;#更加簡潔
三、實例查看文件狀態(采用方法一)
1)得到文件類型:os.stat('test.txt').st_mode
importos
f= open('test.txt', 'w')
s= 'abcde'f.write(s)
f.close()#得到文件狀態
test = os.stat('test.txt')#查看文件狀態
print(test)#輸出:os.stat_result(st_mode=33206, st_ino=562949953421655, st_dev=995426, st_nlink=1, st_uid=0, st_gid=0, st_size=5, st_atime=1523433493, st_mtime=1523588571, st_ctime=1523433493)
#文件類型存放在st_mode中
print(test.st_mode)#輸出:33206#33206實際上是一些標志位構成的;
#將狀態的標志位轉換為二進制(用bin函數),也就是解析此標志位,可直觀看出33206所表示的標志位
print(bin(test.st_mode))#輸出:0b1000000110110110
import stat
#查看stat模塊的功能
print(help(stat))
2)查看文件權限:
importstat#stat.S_ISDIR:判斷文件是不是目錄,若是,返回True,否則返回False
s1 =stat.S_ISDIR(test.st_mode)#stat.S_ISREG:判斷文件是不是普通文件;
s2 =stat.S_ISREG(test.st_mode)#stat.S_ISBLK:判斷是否是塊設備;
#查看文件的讀權限,通過與stat.S_IRUSR(讀權限)取交集,來看文件是否有讀權限;
test.st_mode &stat.S_IRUSR#查看用戶對文件的執行權限
test.st_mode &stat.S_IXUSER#查看其它人對文件的執行權限
test.st_mode & stat.S_IXOTH
3)查看文件的三個時間狀態,訪問、修改、更新:os.stat('test.txt').st_atime/st_mtime/st_ctime
importos
f= open('test.txt', 'w')
s= 'abcde'f.write(s)
f.close()#得到文件狀態
test = os.stat('test.txt')#查看文件狀態
print(test)#輸出:os.stat_result(st_mode=33206, st_ino=562949953421655, st_dev=995426, st_nlink=1, st_uid=0, st_gid=0, st_size=5, st_atime=1523433493, st_mtime=1523588571, st_ctime=1523433493)
#查看3個時間,并通過time模塊下的locatime()方法將秒改為現代時間
import time
#查看最近的訪問時間:test.st_time
print(time.locatime(test.st_atime))
#查看最近修改時間:test.st_mtime
print(time.locatime(test.st_mtime))
#查看最近節點狀態更新時間:test.st_ctime
print(time.locatime(test.st_ctime))
4)查看文件大小
#輸出:os.stat_result(st_mode=33206, st_ino=562949953421655, st_dev=995426, st_nlink=1, st_uid=0, st_gid=0, st_size=5, st_atime=1523433493, st_mtime=1523588571, st_ctime=1523433493)
#查看文件大小:字節數
print(test.st_size)
四、實例查看文件狀態(采用方法一)
標準庫中os.path下的一些函數;#更加簡潔
總結
以上是生活随笔為你收集整理的python 文件状态_Python:如何访问文件的状态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript --- 属性描述
- 下一篇: python提取qq群成员代码_Pyth