美文网首页
5-5 如何访问文件的状态?

5-5 如何访问文件的状态?

作者: Diolog | 来源:发表于2019-02-11 15:22 被阅读0次

    实际案例:
    在某些项目中,我们需要获得文件状态,例如:

    1. 文件的类型(普通文件,目录,符号连接,设备文件...)
    2. 文件的访问权限
    3. 文件的最后的访问/修改/节点状态更改时间
    4. 普通文件的大小
      ....

    解决方案:

    1. 系统调用:标准库中os模块下的三个系统调用stat,fstat,lstat获取文件状态
    2. 快捷函数:标准库中os.path下一些函数,使用起来更加简洁

    测试:

    import os
    
    获取文件状态(跟随符号连接)
    os.stat('a.txt')
    
    输出结果:
    os.stat_result(st_mode=33206, st_ino=562949953566852, st_dev=171730684, st_nlink=1, st_uid=0, st_gid=0, st_size=8402287, st_atime=1549799514, st_mtime=1533054980, st_ctime=1533086202)
    
    os.lstat('a.txt')(不跟随符号连接)
    
    os.lstat(fileno)(参数需要文件的文件描述符)
    

    按照案例要求依次获取文件信息:

    s = os.stat('a.txt')
    
    文件类型
    import stat
    stat.S_ISDIR(s.str_mode)  => False 不是一个文件夹
    stat.S_ISREG(s.str_mode)  => True  是一个普通文件
    
    文件权限
    s.str_mode & stat.S_IRUSR
    
    最后访问时间
    s.st_atime
    import time
    time.localtime(s.str_time)
    
    文件大小
    s.str_size
    

    os.path:

    os.path.isdir('x.txt')
    os.path.isfile('a.txt')
    os.path.islink('a.txt')
    
    返回最近访问时间(浮点型秒数)
    os.path.getatime('a.txt')
    
    返回文件 path 创建时间
    os.path.getctime('a.txt')
    
    返回最近文件修改时间
    os.path.getmtime('a.txt')
    
    返回文件大小,如果文件不存在就返回错误
    os.path.getsize('a.txt')
    

    相关文章

      网友评论

          本文标题:5-5 如何访问文件的状态?

          本文链接:https://www.haomeiwen.com/subject/kzgxeqtx.html