前言
这是我们基础课程的倒数第二节课,主要讲述一些与文件操作相关的操作,这一部分也将是之后进阶Python课程的基础。
提示:以下是本篇文章正文内容,下面案例可供参考
一、文件是什么?
含义
:就是储存在某种长期储存在设备上的一段数据(硬盘、u盘、光盘······)
分类
:
1.文本文件:可以使用文本编辑器来查看的的数据,但本质上还是二进制文件。
2.二进制文件:主要有图片、视频、音频等,不能用文本编辑器来查看,需要用到特定的软件来进行查看。
而文件读写操作就是对这些数据查看和编辑的操作
作用
:把一些内容(数据)存储起来,可以放程序下一次执行的时候直接使用,而不用重新制作,省时省力
二、文件读写的操作
1.基础操作
- 打开文件
语法
:open(目标路径)
分类
:open(绝对路径)、open(相对路径)
比较
:这两种方式都可以作为文件读写的地址但是绝对路径较相对路径来说难以修改,相对路径是当前目录下的路径文件,在当前目录的地址进行改变之后,不需要修改,而绝对路径就要完全就行修改,比较麻烦。
.\ 表示当前路径 ..\表示上一级路径
代码如下(示例):
f = open(r'text.py') # 相对路径
f = open(r'../21.多继承多态/01.多继承.py') # 相对路径 ./当前路径 ../上一级
f = open('F:/devtools/python project/22.文件读写/01.文件读写.py') # 绝对路径 不在一个盘的时候,或者两个文件相差甚远,推荐使用绝对路径
open(r'F:\devtools\python project\15.文件读写\02.读写操作.py')
print(f)
- 读写文件
1.读取文件:
- read(n) n表示从文件中读取数据的长度,没有传n值或者是负值的时候默认一个读取所有的文件。
代码演示:
f = open(r'../21.多继承多态/01.多继承.py')
print(f.read()) #读取文件中的全部内容,返回的是一串二进制代码
# 注意参数n是负数或者超出范围都会将文件全部读取,但是如果文件很大的话,会给内存带来很大的压力,因此一般推荐使用下面两种方式来缓解这样的内存压力。
- readline():一次性读取一行内容,读取完成之后会把文件指针移动到下一行,准备再次读取。
代码演示:
f = open(r'../21.多继承多态/01.多继承.py')
while True:
text = f.readline()
if text == '':
break
print(text, end='')
- readlines():按照行的内容将文件一次性读取,返回的是一个列表,每一行就是列表的一个元素。
代码演示:
f = open(r'../21.多继承多态/01.多继承.py')
print(f.readlines())
2.写入文件
- write(str) 将字符串数据写入文件中,只能读,不能写
f = open('../21.多继承多态/01.多继承.py', encoding='utf-8')
try:
f.write('hhhh')
finally:
f.close()
- 访问模式
- r——只读模式,默认模式,只能进行文件的查看,不能进行修改
- w——只写模式,文件存在清空原有内容,不存在创建新的文件
- a:追加模式:文件有则追加内容,不存在则创建新的文件
- +:表示同时进行读写操作,注意:使用+会影响文件的读写效率,开发中更多会以只读、只写操作。(r+ w+ a+ 以r或者以w或者a为主)
代码演示:
f = open('../21.多继承多态/01.多继承.py', 'a+', encoding='utf-8')
try:
f.write('hhhh')
finally:
f.close()
- 关闭文件
语法:f.close()
注意:使用open打开文件之后一定要记得进行关闭文件,否则就会造成系统资源的浪费。
检验文件是否关闭:print(f.closed)
2.文件指针
含义:指定从哪个位置进行读写操作
代码演示:
f = open('text2.py', encoding='utf-8')
print(f.readline(), end='')
print(f.readline(), end='')
f.close()
方法分类
- tell():显示指针当前所在位置
- seek(0, 0):将文件指针移动到开头
f = open('text2.py', 'a+', encoding='utf-8')
print('指针位置', f.tell())
f.seek(0, 0)
print(f.readline(), end='')
f.close()
3.编码格式
- with open()
作用:代码执行完,系统会自动调用close方法,省略手动关闭
with open('text2.py',encoding='utf-8') as f: # f是普通变量,可以自定义
print(f.read())
- windows系统默认的编码格式是cp936
with open('text2.py', 'w', encoding='utf-8') as f: # f是普通变量,可以自定义
f.write('哈哈哈') # 没有utf-8的话会变成乱码
- 案例展示
# 1)先要读取文件
with open('4.jpg','rb') as f:
img = f.read()
print(img) # 读取到的是bytes类型的数据
# 2)将读取到的图片内容写入到一个新的文件中
with open('4_备份.png','wb') as f:
f.write(img)
4.目录常用操作
首先要进行导入模块os
分类:
-
1.文件重命名 oc.name(旧文件,新文件)
-
2.删除文件 os.remove(目标文件)
-
3.创建文件夹 os.mkdir(文件夹)
-
4.获取当前目录 os.getcwd()
-
5.获取目录列表 os.listdir(目录) # 没有参数的话是获取当前目录下的文件和文件夹
-
6.删除文件夹 os.rmdir(文件夹)
-
7.判断是否是文件 os.path.isfile()
-
8.判断是否是文件夹 os.path.dir()
-
9.判断文件或者目录是否存在 os.path.exists()
目录的操作还有很多,这里就不一一列举了,大家可以自行下去尝试!
总结
这一节的内容比较多,大家下去要多花一点时候来进行学习和记忆!
天才是百分之一的灵感加上百分之九十九的努力。