本模块主要定义了一些常量和函数来处理os.stat()、os.fstat()和os.lstat()等函数返回的结果。如果想了解这些函数具体操作和意义需要参考你所在工作的系统平台函数:stat()、fstat()和lstat()。
下面就是stat模块定义的一些函数来判断返回结果:
stat.S_ISDIR(mode)
如果是目录返回非0值。
stat.S_ISCHR(mode)
如果是字符类的设备文件返回非0值。
stat.S_ISBLK(mode)
如果是块设备类的设备文件返回非0值。
stat.S_ISREG(mode)
如果是一个常规的文件返回非0值。
stat.S_ISFIFO(mode)
如果是FIFO管道返回非0值。
stat.S_ISLNK(mode)
如果是一个符号连接返回非0值。
stat.S_ISSOCK(mode)
如果是一个socket文件返回非0值。
stat.S_ISDOOR(mode)
如果是一个Solaris door返回非0值。
stat.S_ISPORT(mode)
如果是事件端口返回非0值。
stat.S_ISWHT(mode)
如果是BSD whiteout返回非0值。
stat.S_IMODE(mode)
返回可以使用os.chmod()函数设置的文件模式的一部分标志位。
stat.S_IFMT(mode)
返回描述文件类型的部分标志位。
例子:
#python 3.4
import os, sys
from stat import *
def walktree(top, callback):
'''递归遍历所有目录里所有文件'''
for f in os.listdir(top):
pathname = os.path.join(top, f)
mode = os.stat(pathname).st_mode
if S_ISDIR(mode):
# 如果是目录递归进去
walktree(pathname, callback)
elif S_ISREG(mode):
# 如果是一个文件打印输出
callback(pathname)
else:
# 不认识的文件类型打印一个特别的输出
print('Skipping %s' % pathname)
def visitfile(file):
print('visiting', file)
if __name__ == '__main__':
walktree('F:\\temp\\py', visitfile)
结果输出如下:
visiting F:\temp\py\bisect2.py
visiting F:\temp\py\cal_1.py
visiting F:\temp\py\chainmap1.py
visiting F:\temp\py\chainmap2.py
visiting F:\temp\py\closescreen.py
visiting F:\temp\py\codecs1.py
visiting F:\temp\py\complex1.py
visiting F:\temp\py\copy1.py
visiting F:\temp\py\datetimetz.py
visiting F:\temp\py\dec1.py
visiting F:\temp\py\difflib1.py
visiting F:\temp\py\difflib2.py
visiting F:\temp\py\difflib3.py
visiting F:\temp\py\difflib4.py
visiting F:\temp\py\difflib5.py
stat.filemode(mode)
转换文件模式mode为一个可读取的字符串“-rwxrwxrwx”.
蔡军生 QQ:9073204 深圳