高级文件操作

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

Python内置的os模块除了可以对目录进行操作,还可以对文件进行一些高级操作,具体函数如表4所示。

表4  os模块提供的与文件相关的函数

函    数

说    明

access(path,accessmode)

获取对文件是否有指定的访问权限(读取/写入/执行权限)。accessmode的值是R_OK(读取)、W_OK(写入)、X_OK(执行)或F_OK(存在)。如果有指定的权限,则返回1,否则返回0

chmod(path,mode)

修改path指定文件的访问权限

remove(path)

删除path指定的文件路径

rename(src,dst)

将文件或目录src重命名为dst

stat(path)

返回path指定文件的信息

startfile(path [, operation])

使用关联的应用程序打开path指定的文件

下面将对常用的操作进行详细介绍。

1  删除文件

Python没有内置删除文件的函数,但是在内置的os模块中提供了删除文件的函数remove(),该函数的基本语法格式如下:

os.remove(path)

其中,path为要删除的文件路径,可以使用相对路径,也可以使用绝对路径。

例如,要删除当前工作目录下的mrsoft.txt文件,可以使用下面的代码:

import os                      # 导入os模块

os.remove("mrsoft.txt")       # 删除当前工作目录下的mrsoft.txt文件

执行上面的代码后,如果在当前工作目录下存在mrsoft.txt文件,即可将其删除,否则将显示如图26所示的异常。

图26  要删除的文件不存在时显示的异常

为了屏蔽以上异常,可以在删除文件时,先判断文件是否存在,只有存在时才执行删除操作。具体代码如下:

import os                     # 导入os模块

path = "mrsoft.txt"            # 要删除的文件

if os.path.exists(path):      # 判断文件是否存在

    os.remove(path)            # 删除文件

    print("文件删除完毕!")

执行上面的代码,如果mrsoft.txt不存在,则显示以下内容:

文件不存在!

否则将显示以下内容,同时文件将被删除。

文件删除完毕!

2  重命名文件和目录

os模块提供了重命名文件和目录的函数rename(),如果指定的路径是文件的,则重命名文件,如果指定的路径是目录,则重命名目录。rename()函数的基本语法格式如下:

os.rename(src,dst)

其中,src用于指定要进行重命名的目录或文件;dst用于指定重命名后的目录或文件。

同删除文件一样,在进行文件或目录重命名时,如果指定的目录或文件不存在,也将抛出FileNotFoundError异常,所以在进行文件或目录重命名时,也建议先判断文件或目录是否存在,只有存在时才进行重命名操作。

例如,想要将“C:\demo\test\dir\mr\mrsoft.txt”文件重命名为“C:\demo\test\dir\mr\mr.txt”,可以使用下面的代码:

import os                                     # 导入os模块

src = "C:\\demo\\test\\dir\\mr\\mrsoft.txt"    # 要重命名的文件

dst = "C:\\demo\\test\\dir\\mr\\mr.txt"      # 重命名后的文件

os.rename(src,dst)                           # 重命名文件

if os.path.exists(src):                   # 判断文件是否存在

    os.rename(src,dst)                      # 重命名文件

    print("文件重命名完毕!")

else:

    print("文件不存在!")

执行上面的代码,如果“C:\demo\test\dir\mr\mrsoft.txt”文件不存在,则显示以下内容:

文件不存在!

否则将显示以下内容,同时文件被重命名。

文件重命名完毕!

使用rename()函数重命名目录与命名文件基本相同,只要把原来的文件路径替换为目录即可。例如,想要将当前目录下的demo目录重命名为test,可以使用下面的代码:

import os                           # 导入os模块

src = "demo"                         # 重命名的当前目录下的demo

dst = "test"                        # 重命名为test

if os.path.exists(src):               # 判断目录是否存在

    os.rename(src,dst)                 # 重命名目录

    print("目录重命名完毕!")

else:

    print("目录不存在!")

注意:在使用rename()函数重命名目录时,只能修改最后一级的目录名称,否则将抛出如图27所示的异常。

图27  重命名的不是最后一级目录时抛出的异常

3  获取文件基本信息

在计算机上创建文件后,该文件本身就会包含一些信息。例如,文件的最后一次访问时间、最后一次修改时间、文件大小等基本信息。通过os模块的stat()函数可以获取到文件的这些基本信息。stat()函数的基本语法如下:

os.stat(path)

其中,path为要获取文件基本信息的文件路径,可以是相对路径,也可以是绝对路径。

stat()函数的返回值是一个对象,该对象包含如表5所示的属性。通过访问这些属性可以获取文件的基本信息。

表5  stat()函数返回的对象的常用属性

属    性

说    明

属    性

说    明

st_mode

保护模式

st_dev

设备名

st_ino

索引号

st_uid

用户ID

st_nlink

硬链接号(被连接数目)

st_gid

组ID

st_size

文件大小,单位为字节

st_atime

最后一次访问时间

st_mtime

最后一次修改时间

st_ctime

最后一次状态变化的时间(系统不同返回结果也不同,例如,在Windows操作系统下返回的是文件的创建时间)

下面通过一个具体的实例演示如何使用stat()函数获取文件的基本信息。

图标 (35)

  实例06  获取文件基本信息

在IDLE中创建一个名称为fileinfo.py的文件,首先在该文件中导入os模块,然后调用os模块的stat()函数获取文件的基本信息,最后输出文件的基本信息,代码如下:

import os                                            # 导入os模块

fileinfo = os.stat("mr.png")                        # 获取文件的基本信息

print("文件完整路径:", os.path.abspath("mr.png"))    # 获取文件的完整数路径

# 输出文件的基本信息

print("索引号:",fileinfo.st_ino)

print("设备名:",fileinfo.st_dev)

print("文件大小:",fileinfo.st_size," 字节")

print("最后一次访问时间:",fileinfo.st_atime)

print("最后一次修改时间:",fileinfo.st_mtime)

print("最后一次状态变化时间:",fileinfo.st_ctime)

运行上面的代码,将显示如图28所示的结果。

图28  获取并显示文件的基本信息

由于上面的结果中的时间和字节数都是一长串的整数,与我们平时见到的有所不同,所以一般情况下,为了让显示更加直观,还需要对这样的数值进行格式化。这里主要编写两个函数,一个用于格式化时间,另一个用于格式化代表文件大小的字节数。修改后的代码如下:

import os                                    # 导入os模块

def formatTime(longtime):

    '''格式化日期时间的函数

       longtime:要格式化的时间

    '''

    import time                                 # 导入时间模块

    return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(longtime))

def formatByte(number):

    '''格式化文件大小的函数

       number:要格式化的字节数

    '''   

    for (scale,label) in [(1024*1024*1024,"GB"),(1024*1024,"MB"),(1024,"KB")]:

        if number>= scale:                         # 如果文件大小大于或等于1KB

            return "%.2f %s" %(number*1.0/scale,label)

        elif number == 1:                            # 如果文件大小为1字节

            return "1 字节"

        else:                                        # 处理小于1KB的情况

            byte = "%.2f" % (number or 0)

    # 去掉结尾的.00,并且加上单位“字节”

    return (byte[:-3] if byte.endswith('.00') else byte)+" 字节" 

if __name__ == '__main__':

    fileinfo = os.stat("mr.png")                       # 获取文件的基本信息

    print("文件完整路径:", os.path.abspath("mr1.png"))    # 获取文件的完整数路径

    # 输出文件的基本信息

    print("索引号:",fileinfo.st_ino)

    print("设备名:",fileinfo.st_dev)

    print("文件大小:",formatByte(fileinfo.st_size))

    print("最后一次访问时间:",formatTime(fileinfo.st_atime))

    print("最后一次修改时间:",formatTime(fileinfo.st_mtime))

    print("最后一次状态变化时间:",formatTime(fileinfo.st_ctime))

执行上面的代码,将显示如图29所示的结果。

图29  格式化后的文件基本信息

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

重新学习STM32(2)NVIC

概念简介 NVIC,即嵌套向量中断控制器,控制着中断相关的功能,是内核里面的一个外设。 中断在单片机编程中的作用是使单片机能及时响应需要立即处理的事件,但是这些事件也分紧急和非紧急,因此需要优先级来区分。…

frp之XTCP实现内网穿透家用电脑远程桌面公司电脑

官网XTCP介绍 《XTCP介绍》 实现图 fprs.toml # frps 服务端口(不填,则默认:7000) bindPort 81 auth.token "token 令牌"公司电脑frpc.toml serverAddr "frps公网服务器域名或ip" serverPort frps 服…

基于 vue-element-template 框架添加 tagsview

1. 需求 vue-element-template 是一个基础模板,默认没有 tagsview。所以要手动添加。 参考最全面的集成方案框架 vue-element-admin ,拷贝和修改相关文件到你的项目中。 2. 修改 复制如下文件或文件夹 \src\layout\components\TagsView\src\store\mo…

什么情况下要配置DNS服务

什么是DNS 一、DNS就是域名解析 我们上网的方式通常都由ip地址组成,但是为了有个规范,而且我们也不可能去记住那么多一串Ip数字,首先域名就会比ip好记很多,其次固定性,一旦服务器换了,只要重新绑定域名对…

java第二十一课 —— 快捷键,包,访问修饰符

IDEA 快捷键 删除行:Ctrl Y复制行:Ctrl D补全代码:Alt /添加取消注释:Ctrl /导入该行需要的类:Alt Enter快速格式化代码:Ctrl Shift L快速运行程序:Ctrl Shift F10生成构造器&#xf…

分享万能点击器免费版,吾爱大佬出品,这个太赞了!

小伙伴们!阿星又来给大家推荐神奇的小软件啦!这次的主角可是个神器——鼠标连点器!你听过没?这玩意儿简直是个“自动小助手”,让你的鼠标在屏幕上飞舞,点得飞快,解放你的双手,让你网…

企业费用标准如何制定?

在当前宏观经济环境和市场竞争日益激烈的背景下,国内很多企业的费用管理流程依旧面临诸多挑战。特别是制造业、零售业等人员众多的企业,如何通过制定精细化、自动化的企业费用标准来实现降本增效,已经成为企业财务流程优化的首要目标。 企业…

Oracle数据库设计规范指南(Word原件)

方便业务功能实现、业务功能扩展;方便设计开发、增强系统的稳定性和可维护性;保证数据完整性和准确性;提高数据存储效率,在满足业务需求的前提下,使时间开销和空间开销达到优化平衡。资料获取:本文本个人名…

常见硬件工程师面试题(一)

大家好,我是山羊君Goat。 对于硬件工程师,学习的东西主要和电路硬件相关,所以在硬件工程师的面试中,对于经验是十分看重的,像PCB设计,电路设计原理,模拟电路,数字电路等等相关的知识…

FANUC机器人SRVO-348 DCS MCC关闭报警处理方法总结

FANUC机器人SRVO-348 DCS MCC关闭报警处理方法总结 如下图所示,由于操作人员在操机时误打开了安全门,导致机器人紧急制动停止,示教器上显示: SRV0-348 DCS MCC关闭报警0,1, 如下图所示,查看手册中关于SRVO-348报警的具体内容: 原因分析:给机器人主电源上电的接触器在紧…

全志T527芯片详解【三】:丰富接口

工业控制接口 T527集成了大量适用于工业场景的功能接口,包括PCle接口、CAN总线接口、UART接口和PWM接口等。 PCle是智慧工业领域广泛应用的接口,可满足数据高速传输的需求,亦可用于外接大算力NPU/GPU进行算力扩展、外接高速存储介质以及外接…

无忧易售ERP:赋能Onbuy平台,打造产品刊登新高度

在当今全球化的电商蓝海潮涌动下,Onbuy平台以其独特的优势吸引了众多卖家的目光,成为跨境贸易的一片新蓝海。然而,如何在这片海域中扬帆远航,快速、精准地将产品推向世界舞台,是每位卖家面临的挑战。此刻,无…

压缩视频在线压缩网站,压缩视频在线压缩工具软件

在数字化时代,视频成为了人们记录和分享生活的重要载体。然而,视频文件一般都非常大,这不仅占据了大量的存储空间,也给视频的传输和分享带来了不便。因此,压缩视频成为了许多人必须掌握的技能。本文将详细介绍如何压缩…

python数据分析-问卷数据分析(地理课)

学生问卷 分析学生背景:班级分布、每周地理课数量、地理成绩分布 根据问卷,可以知道: 班级分布: 七年级有118名学生。 八年级有107名学生。 每周地理课的数量: 有28名学生每周有1节地理课。 有99名学生每周有2…

python的plt.axis()、plt.xlim() 和 plt.ylim()函数

坐标轴相关设置1、plt.axis():坐标轴设置 函数 plt.axis(*v, **kwargs) 主要用于设置坐标轴的属性,返回值为当前的坐标轴范围 [xmin, xmax, ymin, ymax],几种调用方式如下: 调用方式 说明 axis() 返回当前…

echarts学习: 在图表中添加多条y轴会怎么样?

前言 在撰写如何绘制双y轴图表文章时,我突然萌生出了一个想法,如果给图表添加两个以上的y轴会怎么样呢? 带着这个问题我开始了自己的探索之旅。 我找到了一篇优秀的文章作为参考,虽然它需要付费,但是不要紧,文中免费…

IP域名关系的研究与系统设计(学习某知名测绘系统)

IP域名关系库管理包括域名库检索和whois库检索,详情如下。 域名库检索支持以下5项功能: 1.通过过滤器检索 筛选条件包含IP地址、口令、工具名称、可利用的漏洞编号、创建时间; 2.通过关键字检索 在查询框中输入域名库名称的部分关键词&a…

快速搭建高效运营体系,Xinstall App下载自动绑定助您一臂之力

在互联网的浪潮中,App的推广与运营面临着诸多挑战。如何在多变的互联网环境下迅速搭建起能时刻满足用户需求的运营体系,成为了众多企业关注的焦点。今天,我们就来聊聊如何通过Xinstall的App下载自动绑定功能,轻松解决App推广与运营…

玩转STM32-通信协议SPI(详细-慢工出细活)

文章目录 一、SPI的基础知识1.1 接口定义1.2 单机和多机通信 二、STM32的SPI工作过程2.1 从选择(NSS)脚管理2.2 时钟相位与极性2.3 SPI主模式2.4 SPI从模式 三、应用实例 一、SPI的基础知识 1.1 接口定义 SPI系统可直接与各个厂家生产的多种标准外围器…

111、二叉树的最小深度

给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 题解:找出最小深度也就是找出根节点相对所有叶子结点的最小高度,在这也表明了根节点的高度是变化的,相对不同的叶子结点有不同的高度。…