python 文件状态_Python:如何访问文件的状态
一、案例:在某些項(xiàng)目中,需要獲取文件的狀態(tài)
文件狀態(tài):os.stat(path)
1、文件的類型:普通文件、目錄、符號(hào)鏈接、設(shè)備文件或管道(一般在Linux上)。。。
2、文件的訪問權(quán)限:一般為讀、寫、執(zhí)行,3個(gè)權(quán)限;
3、文件的最后的訪問時(shí)間(對(duì)應(yīng)read操作)、最后的修改時(shí)間(對(duì)應(yīng)write操作)、最后的節(jié)點(diǎn)狀態(tài)更改時(shí)間(對(duì)應(yīng)的chang_move、chang_name的操作)
4、獲取普通文件的大小,也就是字節(jié)數(shù)
#普通文件:如.py、.txt、.csv等;
#目錄文件:目錄d/
#符號(hào)鏈接文件:x.txt -> a.txt,也就是x.txt引用了普通文件a.txt
二、Python中如何獲取文件的狀態(tài)
方法一:系統(tǒng)調(diào)用
標(biāo)準(zhǔn)庫os模塊下的三個(gè)系統(tǒng)調(diào)用:stat、fstat、lstat,獲取文件狀態(tài);
1)os.stat(path)、os.lstat(path)、os.fstat(fileno):獲取指定文件的狀態(tài);
2)stat和lstat的差異:表現(xiàn)在對(duì)符號(hào)鏈接文件的操作,如x.txt -> a.txt:
#os.lstat('x.txt'):返回符號(hào)鏈接x.txt文件的狀態(tài);
#os.stat('x.txt'):返回的是a.txt文件的狀態(tài),因?yàn)閟tat,要跟隨符號(hào)鏈接,指向a.txt文件;
3)fstat和stat功能一樣,差異:os.fstat()操作的是文件的描述符(fileno),不是文件路徑;
方法二:快捷函數(shù)
標(biāo)準(zhǔn)庫中os.path下的一些函數(shù);#更加簡(jiǎn)潔
三、實(shí)例查看文件狀態(tài)(采用方法一)
1)得到文件類型:os.stat('test.txt').st_mode
importos
f= open('test.txt', 'w')
s= 'abcde'f.write(s)
f.close()#得到文件狀態(tài)
test = os.stat('test.txt')#查看文件狀態(tài)
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實(shí)際上是一些標(biāo)志位構(gòu)成的;
#將狀態(tài)的標(biāo)志位轉(zhuǎn)換為二進(jìn)制(用bin函數(shù)),也就是解析此標(biāo)志位,可直觀看出33206所表示的標(biāo)志位
print(bin(test.st_mode))#輸出:0b1000000110110110
import stat
#查看stat模塊的功能
print(help(stat))
2)查看文件權(quán)限:
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:判斷是否是塊設(shè)備;
#查看文件的讀權(quán)限,通過與stat.S_IRUSR(讀權(quán)限)取交集,來看文件是否有讀權(quán)限;
test.st_mode &stat.S_IRUSR#查看用戶對(duì)文件的執(zhí)行權(quán)限
test.st_mode &stat.S_IXUSER#查看其它人對(duì)文件的執(zhí)行權(quán)限
test.st_mode & stat.S_IXOTH
3)查看文件的三個(gè)時(shí)間狀態(tài),訪問、修改、更新:os.stat('test.txt').st_atime/st_mtime/st_ctime
importos
f= open('test.txt', 'w')
s= 'abcde'f.write(s)
f.close()#得到文件狀態(tài)
test = os.stat('test.txt')#查看文件狀態(tài)
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個(gè)時(shí)間,并通過time模塊下的locatime()方法將秒改為現(xiàn)代時(shí)間
import time
#查看最近的訪問時(shí)間:test.st_time
print(time.locatime(test.st_atime))
#查看最近修改時(shí)間:test.st_mtime
print(time.locatime(test.st_mtime))
#查看最近節(jié)點(diǎn)狀態(tài)更新時(shí)間: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)
#查看文件大小:字節(jié)數(shù)
print(test.st_size)
四、實(shí)例查看文件狀態(tài)(采用方法一)
標(biāo)準(zhǔn)庫中os.path下的一些函數(shù);#更加簡(jiǎn)潔
總結(jié)
以上是生活随笔為你收集整理的python 文件状态_Python:如何访问文件的状态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript --- 属性描述
- 下一篇: 计算机无法安装蓝牙驱动,win7电脑蓝牙