文件状态

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]:

results matching ""

    No results matching ""