如何访问文件状态

实际案例

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

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

解决方案:

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

系统调用

# -*- coding: utf-8 -*-

import os
import stat
import time

s = os.stat('test.txt')

# 文件类型
print stat.S_ISREG(s.st_mode)

# 文件的执行权限
print s.st_mode & stat.S_IXUSR

# 文件的读权限
print s.st_mode & stat.S_IRUSR

# 文件的最后访问时间
print time.localtime(s.st_atime)

# 文件的最后修改时间
print time.localtime(s.st_mtime)

# 文件的节点状态更改时间
print time.localtime(s.st_ctime)

# 文件的大小
print s.st_size

其运行结果为:

True
0
256
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=21, tm_hour=20, tm_min=23, tm_sec=52, tm_wday=4, tm_yday=202, tm_isdst=0)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=21, tm_hour=20, tm_min=23, tm_sec=52, tm_wday=4, tm_yday=202, tm_isdst=0)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=21, tm_hour=20, tm_min=23, tm_sec=52, tm_wday=4, tm_yday=202, tm_isdst=0)
1769

快捷函数

# 文件的大小
print s.st_size

# 文件类型
print os.path.isfile('test.txt')

# 文件的最后访问时间
print time.localtime(os.path.getatime('test.txt'))

# 文件的最后修改时间
print time.localtime(os.path.getctime('test.txt'))

# 文件的节点状态更改时间
print time.localtime(os.path.getmtime('test.txt'))

# 文件的大小
print os.path.getsize('test.txt')

注:os.path下没有获取文件权限的函数,因此只能使用系统调用方法来获取文件权限。

其运行结果为:

True
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=21, tm_hour=20, tm_min=23, tm_sec=52, tm_wday=4, tm_yday=202, tm_isdst=0)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=21, tm_hour=20, tm_min=23, tm_sec=52, tm_wday=4, tm_yday=202, tm_isdst=0)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=21, tm_hour=20, tm_min=23, tm_sec=52, tm_wday=4, tm_yday=202, tm_isdst=0)
1769
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,284评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,218评论 2 33
  • 亲爱的老爸, 您是我老爸, 我是您女儿。 小时候, 印象中您总是那么温柔, 对我们百般疼爱。 您像山一般高大, 像...
    福州生命港湾阅读 455评论 0 0
  • 起床:4:30 活动:1、运动60分: 慢跑3.34公里+云板+静蹲+俯卧撑; 2、悦听30分《李中莹第50届NL...
    云水禅心R阅读 255评论 0 0