高级文件操作

自学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  格式化后的文件基本信息

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

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

相关文章

【AI基础】第三步:纯天然保姆喂饭级-安装并运行chatglm2-6b

chatglm2构建时使用了RUST,所以在安装chatglm2之前,先安装RUST。 此系列文章列表: 【AI基础】第一步:安装python开发环境-windows篇_下载安装ai环境python-CSDN博客 【AI基础】第一步:安装python开发环境-conda篇_mini…

知识图谱的应用---智慧司法

文章目录 智慧司法典型应用 智慧司法 智慧司法是综合运用人工智能、大数据、互联网、物联网、云计算等信息技术手段,遵循司法公开、公平、公正的原则,与司法领域业务知识经验深度融合,使司法机关在审判、检查、侦查、监管职能各方面得到全面的…

【数据结构】图论入门

引入 数据的逻辑结构: 集合:数据元素间除“同属于一个集合”外,无其他关系线性结构:一个对多个,例如:线性表、栈、队列树形结构:一个对多个,例如:树图形结构&#xff1…

SpringBoot中的WebMvcConfigurationSupport和WebMvcConfigurer

在SpringBoot中可以通过以下两种方式来完成自定义WebMvc的配置: (1)继承WebMvcConfigurationSupport类 (2)实现WebMvcConfigurer接口 通过这两种方式完成的WebMvc配置存在差异,本文将对此作简单说明与区…

【Vue】单页应用程序介绍

通常基于Vue去开发一整个网站,开发出来的这整个网站应用,我们都会叫做单页应用程序 概念 单页应用程序:SPA【Single Page Application】是指所有的功能都在一个html页面上实现 我们可以将页面共用的部分封装成组件,底下要切换的也…

工具-金舟投屏软件: 手机如何投屏到电脑上 / Wi-Fi / USB

金舟安卓/iOS苹果投屏-正版软件下载中心 方法一、金舟投屏软件-wifi 1.1、准备工作 确保苹果手机和Windows电脑都连接到同一个Wi-Fi网络。 在Windows电脑上安装并打开金舟投屏软件。 1.2、操作步骤 在金舟投屏软件上选择“苹果手机投屏”功能。 在苹果手机上下滑屏幕&am…

New Work-flow of Circuit Bootstrapping

参考文献: [CGGI17] Chillotti I, Gama N, Georgieva M, et al. Faster packed homomorphic operations and efficient circuit bootstrapping for TFHE. ASIACRYPT 2017 (1): 377-408.[CDKS21] Chen H, Dai W, Kim M, et al. Efficient homomorphic conversion be…

dots_image 增强图像中的圆点特征

dots_image 增强图像中的圆点特征 1. dot_image 有什么用途?2. 点状字符的特征增强3. Halcon代码 1. dot_image 有什么用途? Enhance circular dots in an image. 这个算子可以增强图像中的圆点特征,例如下面的例子。 2. 点状字符的特征增强…

忆恒创源国产系列新品 —— PBlaze7 7A40 取得 PCI-SIG 兼容性认证

在此前报道中,我们曾预告了忆恒创源国产系列 PCIe 5.0 SSD 新品 —— PBlaze7 7A40,今天,这款 SSD 已经顺利通过 PCI-SIG 的严格测试并出现在 Integrators List 集成商列表当中,标志着距离 PBlaze7 7A40 的正式发布又近了一步。 正…

记录汇川:红绿灯与HMI-ST

项目要求: 子程序: 子程序: 实际动作如下: 红绿灯与HMI-ST

STM32项目分享:智能门禁锁系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板及元器件图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.c…

基于某评论的TF-IDF下的LDA主题模型分析

完整代码: import numpy as np import re import pandas as pd import jieba from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.decomposition import LatentDirichletAllocationdf1 pd.read_csv(小红书评论.csv) # 读取同目录下csv文件…

【Vue】组件化开发

文章目录 一、介绍二、根组件 App.vue 一、介绍 组件化:一个页面可以拆分成一个个组件,每个组件有着自己独立的结构、样式、行为。 好处:便于维护,利于复用 → 提升开发效率。 组件分类:普通组件、根组件。 根组件…

MySQL 高级 - 第十一章 | 索引优化与查询优化

目录 第十一章 索引优化与查询优化11.1 数据准备11.2 索引失效案例11.2.1 全值匹配10.2.2 最佳左前缀法则10.2.3 主键插入顺序10.2.4 计算、函数、类型转换&#xff08;自动或手动&#xff09;导致索引失效10.2.5 范围条件右边的列索引失效10.2.6 不等于&#xff08;! 或者 <…

删除目录

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 删除目录可以通过使用os模块提供的rmdir()函数实现。通过rmdir()函数删除目录时&#xff0c;只有当要删除的目录为空时才起作用。rmdir()函数的基本语…

牛客java基础(一)

A 解析 : java源程序只允许一个public类存在 &#xff0c;且与文件名同名 ; D hashCode方法本质就是一个哈希函数&#xff0c;这是Object类的作者说明的。Object类的作者在注释的最后一段的括号中写道&#xff1a;将对象的地址值映射为integer类型的哈希值。但hashCode()并不…

Linux性能优化实战

Linux性能优化实战 33 | 关于 Linux 网络&#xff0c;你必须知道这些&#xff08;上&#xff09;如何提高系统并发&#xff1f;&#xff08;8条&#xff09;如何理解分布式&#xff1f;如何理解云计算&#xff1f;如何理解微服务&#xff1f;TCP/IP 网络栈如何分层&#xff1f;…

前端 JS 经典:打印对象的 bug

1. 问题 相信这个 console 打印语句的 bug&#xff0c;其实小伙伴们是遇到过的&#xff0c;就是你有一个对象&#xff0c;通过 console&#xff0c;打印一次&#xff0c;然后经过一些处理&#xff0c;再通过 console 打印&#xff0c;发现两次打印的结果是一样的&#xff0c;第…

SSM整合总结

一.核心问题 (一)两个容器 web容器 web相关组件&#xff08;controller,springmvc核心组件&#xff09; root容器 业务和持久层相关组件&#xff08;service,aop,tx,dataSource,mybatis,mapper等&#xff09; 父容器&#xff1a;root容器&#xff0c;盛放service、mapper、…

Oracle EBS AP发票验证-计税期间出现意外错误解决方法

系统版本 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状: **打开发票题头或发票行“税详细信息”**错误提示如下: 由于以下原因而无法针对"税"窗口中所做的修改更新 Oraclee Payables信息: 尚未为税率或帐户来源税率设置可退回税/应纳税额帐户。请…