Python基础知识4:文件操作

时间:2022-04-28
本文章向大家介绍Python基础知识4:文件操作,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

文件的知识:打开文件、操作文件、关闭文件

1、关于打开文件:

f.open('text','r')#r代表只读
f.open('text','w')#w代表只写,先清空源文件的内容
f.open('text','x')#文件存在即报错,文件不存在则创建文件,并可写入内容(即同w)
f.open('text','a')#a代表在源文件末尾追加内容
案例1:读文件内容的程序
f=open('db','r')
data=f.read()
print(data)
f.close()

案例2:encoding限制文件内容形式

#读文件内容出来,如果打开文件时出现乱码,需要看下encoding对应的类型是否真错
#比如text文件中有汉字,则必须写上encoding='utf-8'
f=open('text','r',encoding='utf-8')
data=f.read()
print(data)
f.close()

案例3:加b后,直接以字节方式读取文件,不加b则以字符串形式读取

f=open('db','rb')#当r为rb时,会以字节方式读取文件
data=f.read()
print(data,type(data))
f.close()

案例4:当传递内容为字符时,需要通过bytes转化

f=open('db','ab')#会以字节方式追加
f.write(bytes("hello",encoding='utf-8'))#当传递内容为字符时,需要用bytes转化
f.close()

案例5:r+即可读又可写,同时不会覆盖文件,会在末尾追加内容

f=open('db','r+',encoding='utf-8')#即可读又可写
data=f.read()
print(data)
f.write("hello")#在末尾覆盖
f.close()

执行结果:

另外还有a+(实现读和写,但写的时候会永远在最后追加),w+(实现写和读,但会清空源文件内容后在写),因此用的最多的是r+

2、关于文件的操作

seek()#将按字节形式读取指针位置,中文代表3个字节
tell()#获取当前指针的位置,按字节形式
案例6:调整指针位置
f=open('db','r+',encoding='utf-8')#即可读又可写
data=f.read(1)#如果打开模型无b,则read按字符读取,如果有b,则按字节方式,比如中文会占3个字节
print(f.tell())#tell()当前指针所在的位置,无论是否有b,均按字节形式
f.seek(f.tell())#可调整当前指针的位置
f.write("888")
f.close()

案例7:flush#强刷,当没有结束程序时,需要把写的内容强制刷进内存

f=open('db','a')
f.write("123")
f.flush()#强制把123内容写入硬盘中
input("hhh")

案例8:truncate,用来截断数据

f=open('db','r+',encoding='utf-8')#即可读又可写
f.seek(3)#调整到3字节
f.truncate()#3字节后的所有内容全部清空
f.close()

其他:readline,仅读取一行

3、关闭文件

可以用f.close(),还可以用with执行完自动关闭

withopen('db')asf:
input("hhh")

案例9:读取第一个文件的前世行,并写入到第二个文件

withopen('db','r')asf1,open('db2','w')asf2:
times=
forlineinf1:#一行一行的读取
times+=1
iftimes
f2.write(line)
else:
break

案例10:修改一个文件,替换部分内容

withopen('db','r')asf1,open('db2','w')asf2:
forlineinf1:
new_str=line.replace("aaa","cc")
f2.write(new_str)