文件状态
stat、lstat、fstat
In [31]: import os
In [32]: os.stat('memory.py')
Out[32]: os.stat_result(st_mode=33188, st_ino=931926, st_dev=51713, st_nlink=1, st_uid=0, st_gid=0, st_size=411, st_atime=1501057169, st_mtime=1481677074, st_ctime=1481677074)
In [33]: os.lstat('/bin/ctop')
Out[33]: os.stat_result(st_mode=41471, st_ino=667223, st_dev=51713, st_nlink=1, st_uid=0, st_gid=0, st_size=4, st_atime=1512976572, st_mtime=1512976563, st_ctime=1512976563)
In [34]: f = open('memory.py')
In [35]: os.fstat(f.fileno())
Out[35]: os.stat_result(st_mode=33188, st_ino=931926, st_dev=51713, st_nlink=1, st_uid=0, st_gid=0, st_size=411, st_atime=1501057169, st_mtime=1481677074, st_ctime=1481677074)
常用例子
判断文件类型
In [36]: import stat
In [41]: s = os.lstat('/bin/ctop')
In [43]: stat.S_ISDIR(s.st_mode)
Out[43]: False
In [44]: stat.S_ISLNK(s.st_mode)
Out[44]: True
In [45]: stat.S_ISREG(s.st_mode)
Out[45]: False
获取文件权限
In [49]: s = os.stat('memory.py')
# 用户 r、w、x
In [50]: s.st_mode & stat.S_IXUSR
Out[50]: 0
In [51]: s.st_mode & stat.S_IRUSR
Out[51]: 256
In [52]: s.st_mode & stat.S_IWUSR
Out[52]: 128
# 组 r、w、x
In [53]: s.st_mode & stat.S_IRGRP
Out[53]: 32
In [54]: s.st_mode & stat.S_IWGRP
Out[54]: 0
In [55]: s.st_mode & stat.S_IXGRP
Out[55]: 0
# 其他 r、w、x
In [56]: s.st_mode & stat.S_IROTH
Out[56]: 4
In [57]: s.st_mode & stat.S_IWOTH
Out[57]: 0
In [58]: s.st_mode & stat.S_IXOTH
Out[58]: 0
获取文件atime、ctime、mtime
In [60]: import time
In [61]: time.localtime(s.st_atime)
Out[61]: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=26, tm_hour=16, tm_min=19, tm_sec=29, tm_wday=2, tm_yday=207, tm_isdst=0)
In [62]: time.localtime(s.st_ctime)
Out[62]: time.struct_time(tm_year=2016, tm_mon=12, tm_mday=14, tm_hour=8, tm_min=57, tm_sec=54, tm_wday=2, tm_yday=349, tm_isdst=0)
In [63]: time.localtime(s.st_mtime)
Out[63]: time.struct_time(tm_year=2016, tm_mon=12, tm_mday=14, tm_hour=8, tm_min=57, tm_sec=54, tm_wday=2, tm_yday=349, tm_isdst=0)
普通文件大小
In [66]: s.st_size
Out[66]: 411
os.path()
os.path()模块提供了更方便的使用方法,底层调用stat
类型判断
In [68]: os.path.isdir('memory.py')
Out[68]: False
In [69]: os.path.isfile('memory.py')
Out[69]: True
In [70]: os.path.islink('memory.py')
Out[70]: False
In [71]: os.path.islink('/bin/ctop')
Out[71]: True
os.path没有提供权限接口
时间信息
In [75]: os.path.getatime('memory.py')
Out[75]: 1501057169.437551
In [76]: os.path.getctime('memory.py')
Out[76]: 1481677074.0524888
In [77]: os.path.getmtime('memory.py')
Out[77]: 1481677074.0444887
文件大小
In [78]: os.path.getsize('memory.py')
Out[78]: 411
重命名文件
In [6]: file_list = os.listdir()
In [7]: for fn in file_list:
...: os.rename(fn, fn.split('&access')[0])
...:
In [8]: