我们的目标是:通过这一套资料学习下来,通过熟练掌握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!
今天先写学习到这里了,每天进步一点点。明天也要加油啊!