一、案例:在某些项目中,需要获取文件的状态

文件状态:os.stat(path)

1、文件的类型:普通文件、目录、符号链接、设备文件或管道(一般在Linux上)。。。

2、文件的访问权限:一般为读、写、执行,3个权限;

3、文件的最后的访问时间(对应read操作)、最后的修改时间(对应write操作)、最后的节点状态更改时间(对应的chang_move、chang_name的操作)

4、获取普通文件的大小,也就是字节数

#普通文件:如.py、.txt、.csv等;

#目录文件:目录d/

#符号链接文件:x.txt -> a.txt,也就是x.txt引用了普通文件a.txt

二、Python中如何获取文件的状态

方法一:系统调用

标准库os模块下的三个系统调用:stat、fstat、lstat,获取文件状态;

1)os.stat(path)、os.lstat(path)、os.fstat(fileno):获取指定文件的状态;

2)stat和lstat的差异:表现在对符号链接文件的操作,如x.txt -> a.txt:

#os.lstat('x.txt'):返回符号链接x.txt文件的状态;

#os.stat('x.txt'):返回的是a.txt文件的状态,因为stat,要跟随符号链接,指向a.txt文件;

3)fstat和stat功能一样,差异:os.fstat()操作的是文件的描述符(fileno),不是文件路径;

方法二:快捷函数

标准库中os.path下的一些函数;#更加简洁

三、实例查看文件状态(采用方法一)

1)得到文件类型:os.stat('test.txt').st_mode

importos

f= open('test.txt', 'w')

s= 'abcde'f.write(s)

f.close()#得到文件状态

test = os.stat('test.txt')#查看文件状态

print(test)#输出:os.stat_result(st_mode=33206, st_ino=562949953421655, st_dev=995426, st_nlink=1, st_uid=0, st_gid=0, st_size=5, st_atime=1523433493, st_mtime=1523588571, st_ctime=1523433493)

#文件类型存放在st_mode中

print(test.st_mode)#输出:33206#33206实际上是一些标志位构成的;

#将状态的标志位转换为二进制(用bin函数),也就是解析此标志位,可直观看出33206所表示的标志位

print(bin(test.st_mode))#输出:0b1000000110110110

import stat

#查看stat模块的功能

print(help(stat))

2)查看文件权限:

importstat#stat.S_ISDIR:判断文件是不是目录,若是,返回True,否则返回False

s1 =stat.S_ISDIR(test.st_mode)#stat.S_ISREG:判断文件是不是普通文件;

s2 =stat.S_ISREG(test.st_mode)#stat.S_ISBLK:判断是否是块设备;

#查看文件的读权限,通过与stat.S_IRUSR(读权限)取交集,来看文件是否有读权限;

test.st_mode &stat.S_IRUSR#查看用户对文件的执行权限

test.st_mode &stat.S_IXUSER#查看其它人对文件的执行权限

test.st_mode & stat.S_IXOTH

3)查看文件的三个时间状态,访问、修改、更新:os.stat('test.txt').st_atime/st_mtime/st_ctime

importos

f= open('test.txt', 'w')

s= 'abcde'f.write(s)

f.close()#得到文件状态

test = os.stat('test.txt')#查看文件状态

print(test)#输出:os.stat_result(st_mode=33206, st_ino=562949953421655, st_dev=995426, st_nlink=1, st_uid=0, st_gid=0, st_size=5, st_atime=1523433493, st_mtime=1523588571, st_ctime=1523433493)

#查看3个时间,并通过time模块下的locatime()方法将秒改为现代时间

import time

#查看最近的访问时间:test.st_time

print(time.locatime(test.st_atime))

#查看最近修改时间:test.st_mtime

print(time.locatime(test.st_mtime))

#查看最近节点状态更新时间:test.st_ctime

print(time.locatime(test.st_ctime))

4)查看文件大小

#输出:os.stat_result(st_mode=33206, st_ino=562949953421655, st_dev=995426, st_nlink=1, st_uid=0, st_gid=0, st_size=5, st_atime=1523433493, st_mtime=1523588571, st_ctime=1523433493)

#查看文件大小:字节数

print(test.st_size)

四、实例查看文件状态(采用方法一)

标准库中os.path下的一些函数;#更加简洁

python 文件状态_Python:如何访问文件的状态相关推荐

  1. linux 访问文件软件,Linux下访问文件的基本模式

    Linux下访问文件的基本模式 发表于:2013-10-09来源:IT博客大学习作者:edsionte点击数: 访问文件的操作主要是指读文件和写文件,下文简单说明内核中几种常见的访问文件的方式. 访问 ...

  2. python保存文件到指定文件夹_python实现指定文件夹下的指定文件移动到指定位置...

    本文主要是写了一个将指定文件夹下的指定文件类型移动到指定位置,具体内容如下 # coding:utf-8 import os import shutil import sys reload(sys) ...

  3. python目录下的文件夹_Python列出当前文件夹下文件的两种方法

    使用Python做一些自动化操作时,经常与文件夹和文件打交道,这就依赖于OS模块了. OS是Operate System的缩写,是Python标准库中一个用于访问操作系统功能的模块,OS模块中的接口可 ...

  4. python open写入_Python open读写文件实现脚本

    1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件.1file_object= open('thefile.txt ...

  5. python目录及文件操作_python路径及文件操作,10.22,10.27

    csv 和ini文件处理 作者: 一个小菜鸡 csv常见格式 nums     options      arguments 逗号分割值 comma-Separated Values CSV是一个被行 ...

  6. python修改文件内容_python批量修改文件夹及其子文件夹下的文件内容

    前言:前几天我看一位同学要修改很多文件中的数据,该文件数据很规律,一行只有三个数,需要将每行最后一个数字改为负数,但文件有上千个,分布在每个文件夹下面以及它的多级子文件夹下,看他用excel手动改数据 ...

  7. python文件分发_python 写一个文件分发小程序

    一.概述 该小程序实现从源端到目标端的文件一键拷贝,源端和目标段都在一台电脑上面,只是目录不同而已 二.参数文件说明 1. settings.txt的说明 a. 通过配置settings.txt,填源 ...

  8. python怎么编辑文件夹_python创建修改文件

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径:os.getcwd() 返回指定目录下的所有文件和目录 ...

  9. python设置文件权限_PYTHON学习之文件操作;

    PYTHON学习之文件操作: 文件内容替换 for line in flielinput.input("filepath",inplace=1): line = line.repa ...

  10. python修改文件后缀_python实现遍历文件夹修改文件后缀

    本文实例为大家分享了python实现遍历文件夹修改文件后缀的具体代码,供大家参考,具体内容如下 用法 python Modifer.py ./ -fp java xml # coding:utf-8 ...

最新文章

  1. 基础设计模式:单例模式+工厂模式+注册树模式
  2. @scheduled cron启动后和每小时执行_小耶哥: 一个Redis分布式锁又要和小鑫同学扯半个小时!...
  3. 基于SSH实现教务管理系统
  4. E0144 const char * 类型的值不能用于初始化 char * 类型的实体
  5. 指标搭建篇:如何搭建指标体系?——以公众号实战为例
  6. 深度学习基础(二)激活函数
  7. 怎么让手机变成震动器_手机厂商都在说的线性马达,到底是个什么东西?
  8. Android检测版本更新
  9. 克鲁赛德战记服务器无响应,克鲁赛德战记闪退黑屏登不上怎么办 解决方法
  10. 作业调度算法--高响应比优先
  11. 视频播放器三大底层架构
  12. 计算机考研复试之KY122 找出直系亲属(c++)
  13. PostgreSQL 执行计划与实际成本的偏差
  14. 2.3、Segment Routing基础之IGP Segment 类型详解
  15. 福家宝机器人,关于举办第六届宁夏青少年智能机器人竞赛的通知.doc
  16. 基于微信小程序+爬虫制作一个表情包小程序
  17. 知名油漆涂料品牌排行榜前十名
  18. php下拉框css样式,纯CSS实现的下拉菜单
  19. 技嘉1080显卡体质测试软件,技嘉GTX1080 Xtreme Gaming显卡评测:创新的重峦式三风扇...
  20. 微信企业向个人账户提现

热门文章

  1. 小强升职记梗概_时间管理法 ——《小强升职记》读书笔记 1
  2. Spring Boot 2.2版本变化[翻译]
  3. Redis分布式锁—SETNX+Lua脚本实现篇
  4. centos7 geenplum5.x postgis开源版本编译
  5. firefox input file宽度失效
  6. mysql数据库的注释语句是_coding++ :MySQL 使用 SQL 语句查询数据库所有表注释已经表字段注释...
  7. 2020计算机领域前沿热门技术,CFP: ICPCSEE 2020 (SCI or EI Indexd) 第6届国际计算机前沿大会...
  8. file相对路径java_浅谈java 中文件的读取File、以及相对路径的问题
  9. hibernate基于单表curd
  10. 树控件,多条件组合查询与混合数据源