Python 从入门到实战30(高级文件的操作)

我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

上篇文章我们讨论了操作目录的相关知识。今天我们将学习一下高级文件操作的相关知识。

python 内置的os 模块除了可以对目录进行操作,还可以进行一些文件的高级操作。

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) | 将文件或者目录修改为dst |
| stat(path) | 返回path指定的文件信息 |
| startfile(path,operation) | 使用关联的应用程序打开path指定的文件 |

1、删除文件

python 中删除文件可以使用os模块提供的函数。

语法:os.remove(path)

其中path -----是要删除的文件路径,可以是相对路径或者绝对路径

举例说明;

import os #导入模块

def main():

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

os.remove("test_fold.txt") #存在文件执行删除

else:

print("要删除的文件不存在!")

如上执行,因为开始没有文件,数据结果:

若是我们新建一个再执行删除,

import os #导入模块

def main():

test_fold = 'test_fold.txt'

if not os.path.exists(test_fold): #文件不存在,先新建文件

open(test_fold,'w')

else:

print("文件已经存在")

if os.path.exists(test_fold):

os.remove(test_fold)

print("删除文件了")

else:

print("要删除的文件不存在!")

输出结果:删除文件了

2、重命名文件和目录

重命名文件或者目录使用os模块提供的rename()函数,

语法参考:os.rename(src,dst)

其中 src -----要重命名的原文件或者目录

dst-----重命名后的文件或者目录

1)重命名文件举例

test_demo.txt 我们开始是由这个文件的。将其进行重命名:

import os #导入模块

def main():

src = r'D:\dewi\project2024\myListPractice\pythonProject1\test_demo.txt'

dst = r'D:\dewi\project2024\myListPractice\pythonProject1\test_demo1.txt'

if os.path.exists(src):

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

print("文件命名完毕")

else:

print("文件不存在")

输出参考:文件命名完毕

2)目录的命名

也是使用os.rename()函数,举例说明:

import os #导入模块

def main():

src = 'prc'

dst = "practice"

if os.path.exists(src):

os.rename(src,dst)

else:

print(f"文件:{src}","不存在")

第一次执行:如下图,看到文件夹被改变为practice

再次执行:就会提示文件不存在,因为已经被修改了

3、获取文件基本信息

在计算机上创建文件后,该文件会包含一些信息。如文件最后一次访问时间、最后一次修改时间、文件大小等。这些信息可以使用os模块中的stat()函数来获取。

os.stat(path)

参数说明:path 是要获取的文件基本信息的文件路径,可以是相对路径,也可以是绝对路径;

此函数的返回值是一个对象,其具有下表所示的属性,通过访问这些属性,就可以获取指定文件的基本信息。

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

|----------|-------------|----------|--------------------------------------------------------------|
| 属性 | 说明 | 属性 | 说明 |
| st_mode | 保护模式 | st_dev | 设备名 |
| st_ino | 索引号 | st_uid | 用户 ID |
| st_nlink | 硬链接号(被连接数目) | st_gid | 组 ID |
| st_size | 文件大小,以字节为单位 | st_atime | 最后一次访问时间 |
| st_mtime | 文件最后一次修改时间 | st_ctime | 最后一次状态变化的时间,操作系统不会,该属性对应的结果也不同,例如在 Windows 操作系统下返回的就是文件的创建时间 |

举例说明:

import os #导入模块

def main():

fileinfo = os.stat("test_data.txt")#获取文件基本信息

#下面输出文件基本信息

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

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

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

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

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

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

输出结果参考:

查看上面的输出结果,看到时间有点看不懂,可以转换一下:

#时间转换函数:def formatOuttime(longtime):
*'''*时间进行格式化
:param longtime:
要格式化的时间
:return:
返回日常使用的时间
'''
import time
return time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(longtime))

def main():

fileinfo = os.stat("test_data.txt")#获取文件基本信息

#下面输出文件基本信息

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

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

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

print("最后一次访问时间:", formatOuttime(fileinfo.st_atime))#调用函数进行时间格式化输出

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

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

输出结果参考:

4、补充一个小知识-输出带有字符串的变量

#输出带有字符串的变量方法:
#1、使用f - string

name = "Alice"

print(f"Hello, {name}!")

2、使用str.format() 方法

name = "xiaomi"

print("Hello, {}!".format(name))

#3、在字符串中使用 + 连接符来拼接变量

name = "小明"

print("Hello, " + name + "!")

#4、使用 % 操作符 (较老的方式,Python 2风格)

name = "xiaohua"

print("Hello, %s!" % name)

输出参考:

Hello, Alice!

Hello, xiaomi!

Hello, 小明!

Hello, xiaohua!

今天先写学习到这里了,每天进步一点点。明天也要加油啊!

相关推荐
gwf21613 分钟前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
爱吃提升27 分钟前
python 分布式爬虫、爬虫合规与综合实战项目
分布式·爬虫·python
审小匠OpenCPAi28 分钟前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
元Y亨H2 小时前
Pandas 解析 Excel 导致的内存溢出(MemoryError)
python·excel
金銀銅鐵2 小时前
[Python] 用 turtle 来绘制瑞典国旗
python
Albert Edison2 小时前
【GUI 自动化测试】Pywinauto 常见操作
自动化测试·python·pywinauto
海兰2 小时前
【高速缓存】RedisVL为文本生成嵌入向量实践指南
人工智能·python·机器学习
2601_955760073 小时前
如何用 Claude Opus 5 API 批量扩展长尾关键词和文章选题
前端·python·搜索引擎
艾斯特_3 小时前
从模型调用到可用聊天应用:会话状态与消息协议
python·ai·aigc
Marst Code3 小时前
Python 3.9 已停止维护!从 3.9 到 3.14 全版本深度对比,生产环境该选哪个?
开发语言·python