python 文件状态_Python:如何访问文件的状态

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

文件状态: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下的一些函数;#更加简洁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 开发笔记___drawable

1 <?xml version"1.0" encoding"utf-8"?>2 <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"3 android:layout_width"match_parent"4 android:layout_height"match_parent"5 …

win7 管理iphone日历_大师给你传授win7系统安装桌面日历的途径

win7正式版系统是公认操作便捷的电脑系统&#xff0c;大概很多人在操作过程中都会有应对win7系统安装桌面日历难题的时候。不少小白计算机技术还纯属于菜鸟&#xff0c;关于win7系统安装桌面日历的情况&#xff0c;不能自行处理。很多人都来询问小编win7系统安装桌面日历应该如…

Ubuntu下gcc多版本共存和版本切换

https://my.oschina.net/u/2306127/blog/538139 摘要: Ubuntu系统使用的gcc版本随着发布版本的不同而不同&#xff0c;在编译android系统时不同的版本推荐用不同的gcc去编译&#xff0c;那么可不可以改变系统的gcc来适应android编译环境的需求呢&#xff1f;答案是可以的。 Ubu…

手动导入maven项目依赖jar包

当通过坐标引入依赖jar包时&#xff0c;经常会出现下载失败或导入失败&#xff0c;需要手动去导入。 通过maven 仓库地址&#xff1a;https://mvnrepository.com/下载或其他方式拷贝的对应依赖jar包到本地。打开cmd命令窗口输入以下命令&#xff1a; mvn install:install-file…

内部属性 聚合_光的本质(用粒子性解释光的所有属性,颜色,介质内速度改变等)...

本文已经发布于《科技展望》2017年27期&#xff0c;转发请注明。1.1 光的本质1.1.1 光的本质光是地球上的生命体存在的前提条件&#xff08;当然地球上也存在不能见光的生命体&#xff0c;但即使是这些生命体不能见光&#xff0c;它们最终需要的能源也间接的来源于光&#xff0…

spring MVC报错:A child container failed during start

严重: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]] at java.util.concurrent.FutureTask.rep…

easyui(一) 初始easyui

分享使我快乐。哈哈~ --WZY 一、什么是easyui&#xff1f; 学习一个东西&#xff0c;最重要的是知道它的定位(是干嘛的&#xff0c;基本的用法是什么&#xff0c;快速入门)&#xff0c;其实easyui也非常简单&#xff0c;不要觉得很难。 easyui就是一个前端框架&#xff0c;JQue…

mysql数据库代码_【代码总结】MYSQL数据库的常见操作

MYSQL数据库的常见操作一、mysql的连接与关闭-h&#xff1a;指定所连接的服务器位置-u&#xff1a;数据库的用户名-p&#xff1a;数据库的密码1 mysql -u 用户名 -p //连接数据库2 密码3 exit //关闭数据库1 mysql_connect($host,$user,$password); //连接数据库2 mysql_close(…

luogu P1659 养猪 dp 好理解

P1659 养猪 题目描述 你有一个猪圈&#xff0c;有N头猪&#xff0c;每天你最多可以杀一头猪卖钱&#xff0c;获益就是猪的体重。但是每过一天每头猪的体重都会下降P[i]&#xff08;当然&#xff0c;如果猪体重<0了&#xff0c;自然获利为0&#xff09;&#xff0c;问K天内你…

Mysql数据库---约束类型_mysql数据库的数据类型及约束

1、整型MySQL数据类型含义(有符号)tinyint(m)1个字节 范围(-128~127)smallint(m)2个字节 范围(-32768~32767)mediumint(m)3个字节 范围(-8388608~8388607)int(m)4个字节 范围(-2147483648~2147483647)bigint(m)8个字节 范围(-9.22*10的18次方)取值范围如果加了unsigned&am…

HDU1023 Train Problem II

传送门https://vjudge.net/problem/HDU-1023 解题思路&#xff1a; 大数和卡特兰数 实现代码&#xff1a; #include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std;const int MAX100; const int BASE10000…

命令创建mysql数据库_怎么在命令行创建一个mysql数据库

哆啦的时光机第一步&#xff1a;登陆到MySQL服务器  首先&#xff0c;你需要使用root用户登陆进你的MySQL数据库&#xff0c;如下&#xff1a;  $ mysql -u root -h -p  请注意&#xff1a;为了能登进远程的MySQL服务器&#xff0c;你需要开启服务器上的远程访问&#xf…

A-Z排序控件的实现

前言最近项目需要做一个地区首字母a-z排序的效果,记录一下自己如何实现的. 先看下效果图: 分析这种效果自己实现还是第一次;之前见过这种效果: 这些字母都是onDraw画上去的;只要知道每个字母的left,top,right,bottom就能知道它的具体位置,所以onMeasure方法中要确定每个单元格的…

mysql 导入unl文件_Informix和Oracel数据库导入UNL数据

Oracle导入UNL数据$1/$2$3 用户名密码数据库名1、loadunl.sh文件##模板表部分数据(tap_gen_template)sqlldr userid$1/$2$3control ./tap_gen_template.ctl data ./tap_gen_template.unl ;2、tap_gen_template.ctlLOAD DATA CHARACTERSET ZHS16GBKINFILE tap_gen_template.unl…

jstl c:choose、c:when和c:otherwise标签的简单使用介绍

<c:choose>、<c:when>和<c:otherwise>在一起连用&#xff0c;可以实现Java语言中的if-else语句的功能。例如以下代码根据username请求参数的值来打印不同的结果&#xff1a;<c:choose> <c:when test"${empty param.username}"> Nnkn…

mysql两个表查询修改_MySQL:查询、修改(二)

干货:使用SELECT查询的基本语句SELECT * FROM 可以查询一个表的所有行和所有列的数据。SELECT查询的结果是一个二维表。使用SELECT *表示查询表的所有列&#xff0c;使用SELECT 列1, 列2, 列3则可以仅返回指定列&#xff0c;这种操作称为投影。SELECT语句可以对结果集的列进行重…

Jython中文乱码问题

最近&#xff0c;在项目中需要用到Java代用Python的代码&#xff0c;并且需要传参数&#xff0c;因此选用了Jython包&#xff0c;但是&#xff0c;如果在调用python脚本时&#xff0c;出现了中文乱码的现象。代码如下&#xff1a; PythonInterpreter interpreter interpreter …

Mysql储存过程2:变量定义与参数传递

#储存过程 中的变量定义 declare 变量名 类型 可选类型 -- 跟建表差不多create procedure p()begindeclare age int default(18);declare number int default 1;select agenumber;end$ /* mysql> create procedure p()-> begin-> declare age int default(18);-…

docker安装mysql数据库映射_Docker安装mysql数据库

docker镜像下载完成后&#xff0c;我们通过镜像创建容器并运行&#xff0c;命令如下&#xff1a;docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 -d mysql-p 3306:3306…

无规则弹窗自动点击插件_vscode 插件会了吧,英语不好的赶紧下载 自动分析源码中的陌生单词、点击朗读单词...

名字非常土&#xff1a;会了吧&#xff01;Solgan 还在因为 变量中 包含不认识的单词 头大吗&#xff1f;还在因为 看不懂 英文注释/文档 掉头发吗 &#xff1f;还在因为 各种机器翻译的内容 云里雾里吗 &#xff1f;您的救星来了&#xff01;&#xff01;&#xff01;用了“会…