案例:
在某项目中,需要获取文件状态,如:
- 文件的类型(普通文件、目录、符合连接、设备文件)
- 文件的访问权限
- 文件最后 访问、修改、节点状态 时间
- 普通文件大小
- ……
如何解决?
方法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'))