python基础-文件操作

基本内容概括:

文件操作三部曲:

打开文件

操作文件

关闭文件

基本文件操作

首先要打开文件,并选择打开的模式

基本的模式有读,写,追加,三种

读文件

对文件的内容进行读取,并打印

一次性读取文件所有信息

文件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模块会继续对文件以及文件夹的操作进行讲解,在案列用户注册与登录中,后续也会更新使用文件操作,将注册的用户写入文件中保存,感兴趣的朋友们到时候可以去看一下,进行印象的加深和知识的回顾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值