基本内容概括:
文件操作三部曲:
打开文件
操作文件
关闭文件
基本文件操作
首先要打开文件,并选择打开的模式
基本的模式有读,写,追加,三种
读文件
对文件的内容进行读取,并打印
一次性读取文件所有信息
文件1.txt的内容:
file = open("./1.txt",encoding="utf-8")
line = file.read()
print(line)
执行结果:
由结果可以看出,此方法一次性将文件中的内容全部读取完毕并进行打印
因此,此方法只适用与较小的文件,大文件不适用
一次读取文件部分信息
无论什么数据,在文件中的存储形式都是数据,因此,在读取时,可设置参数,使文件读取时可以进行把控
file = open("./1.txt",encoding="utf-8")
line = file.read(10) #添加参数10,使得每次读取的字符数稳定为10
print(line) #电影名:属于三大队的
file.close()
除此之外,还可以逐行对文件进行读取
file = open("./1.txt",encoding="utf-8")
line = file.readline()
print(line) #电影名:属于三大队的那些,闪光瞬间
file.close()
在此基础上,我们在进行文件读取时,可以利用逐行读取,加上for循环来对大文件进行解读,避免内存的浪费
file = open("./1.txt",encoding="utf-8")
for line in file:
print(line)
file.close()
执行结果:
此外,在进行逐行读取是,还可以使用readlines()对读取的结果进行处理,使得最后文件所有内容包含在一个列表中,列表中的每个元素为文件中每一行的内容
file = open("./1.txt",encoding="utf-8")
s = file.readlines()
print(s)
file.close()
实验结果(一部分)
读取非文本文件
使用”rb"模式
目标文件(一个非文本文件)
file = open(r"D:\python\ikun\venv\static\ikun.py\flask_family\1.jpeg",mode="rb")
s = file.read()
print(s)
file.close()
读取结果(部分):
文件的写与追加
对文本文件进行写入,或者进行内容的追加
文件的写入
file = open("2.txt",mode="w",encoding="utf-8")
file.write("海绵宝宝")
file.close()
如果文件存在,先将文件内容进行清空,然后将“海绵宝宝”写入文件
如果文件不存在,则会先创建文件,然后将”海绵宝宝“写入文件
利用”wb“模式可实现对非文本文件的书写,利用文件的读写,可实现对图片的复制粘贴
file_1 = open("2.jpeg",mode="rb")
content = file_1.read()
file_1.close()
file_2 = open("3.jpeg",mode="wb")
file_2.write(content)
file_2.close()
拓展
在此处要对文件的写入进行说明
由于操作系统的影响,数据进入内存会经过高速缓存
因此,在执行玩write时,可能写入的数据不会立马出现在文件中,会有一丁点的延迟
import time
with open("1.txt",mode="a",encoding="utf-8") as file :
for i in range(101):
time.sleep(0.1)
file.write("{}\n".format(i))
我们给此程序增加睡眠,以延长其执行时间,然后观察文件 1.txt 就不难发现,在程序执行完毕之前,文件中没有数据被写入
虽然在当下的我们看来,并不影响什么,但是在实际生产时,可能就会出现问题,因此,为了保证数据的快速写入,在此推荐大家写文文件时,使用flush命令,是数据立刻存储到内存中,以防止数据传输过程中时延造成的印象而产生不必要的损失
import time
with open("1.txt",mode="a",encoding="utf-8") as file :
for i in range(101):
time.sleep(0.1)
file.write("{}\n".format(i))
file.flush()
在原代码的基础上,增加最后一句flush操作
从实验结果不难发现,此程序在未结束执行时就像文件中写入数据,可以有效的避免数据延时
文件的追加
在文件中写入新的内容
file_1 = open("100.txt",mode="a")
content = file_1.write("asdasdads")
file_1.close()
若文件存在,则会在文件的尾部进行追加
如果文件不存在,则会新建文件并进行写入
打开文件的另一种方式(with上下文)
通常在使用上面的文件操作方式时,关闭文件总是成为我们容易忘记的地方
因此,我们可以使用这种with的方式来打开,避免文件忘记关闭而导致的不当行为
with open("1.txt",mode="a",encoding="utf-8") as file :
for i in range(101):
file.write("{}\n".format(i))
基本文件操作就讲这么多了,在后续的os模块以及shulit模块会继续对文件以及文件夹的操作进行讲解,在案列用户注册与登录中,后续也会更新使用文件操作,将注册的用户写入文件中保存,感兴趣的朋友们到时候可以去看一下,进行印象的加深和知识的回顾