文件读写
文件操作一般步骤:
打开文件
读/写文件
保存文件
关闭文件
【在python中操作文件也是遵循这几个步骤的】
打开文件
在Python中打开文件使用open函数,可以打开一个已经存在的文件,或者创建一个新文件
语法格式: open('文件名称','打开模式’)
示例:
*规定encode有两种:打开的行指明或者写入行指明(见如下代码)
*每个项目的虚拟环境不同,安装的包都不同,不需要都安装
文件的操作
# 打开文件 open
# 默认的编码是gbk 这个是中文编码,最好的习惯呢就是我们再打开一个文件的时候
# 给它指定一个编码类型
# fobj=open('./Test.txt','w',encoding='utf-8')#w的打开模式:打开或没有的时候自动创建#fobj保存打开后返回的对象
# # 开始操作 读/写操作
# fobj.write('在苍茫的大海上')#里边写内容,这时后内容是在内存中并没有到文件中,close后才到了文件中
# fobj.write('狂风卷积着乌云')#w这种模式每次打开都会重新创建,如果是第二次运行,会覆盖掉之前的,可以尝试把这行注释掉再运行下一行,查看文件内容,发现已经被覆盖
# fobj.write('在乌云和大海之间\r\n')
# fobj.write('海燕像黑色的闪电\r\n')
# fobj.close()
# 以二进制的形式去写数据,改变写的方式只和打开的模式有关系
# fobj=open('Test_1.txt','wb') #str-->bytes
# fobj.write('在乌云和大海之间'.encode('utf-8'))#这样规定编码也可以
# fobj.close()
# fobj=open('Test.txt','a') #用于追加数据,用a模式,不能再规定encoding为utf-8了,会把字符串形式转化为字节
# fobj.write('在乌云和大海之间\r\n')#\r\n用于换行
# fobj.write('海燕像黑色的闪电\r\n')
# fobj.close()
fobj=open('Test.txt','ab') # a 用于追加数据
fobj.write('在苍茫的大海上', encode('utf-8')#以ab模式时,就要规定encode的形式是二进制,因为ab模式是以二进制形式存储
fobj.write('狂风卷积着乌云')
fobj.write('在乌云和大海之间\n')
fobj.write('海燕像黑色的闪电\n')
fobj.write('今天我诗兴大发\n')
fobj.write('发感觉咋样呢\n')
fobj.close()
fobj=open('Test.txt','a') # a 用于追加数据
fobj.write('在苍茫的大海上')
fobj.write('狂风卷积着乌云')
fobj.write('在乌云和大海之间\n')
fobj.write('海燕像黑色的闪电\n')
fobj.write('今天我诗兴大发\n')
fobj.write('发感觉咋样呢\n')
fobj.close()
文件打开模式
*实际操作中a,w模式比较常用
关闭文件
语法格式: close() 方法关闭文件
示例:
注意: 打开一个文件之后,一定要关闭,否则后面无法继续操作这个文件。
写文件
写入文件 write() 方法,参数就是需要写入的内容。
writelines() 可传一个可迭代对象
读文件
读取文件 read() ,将文件的内容全部读取出来。
读取指定字符个数 read(num)传入一个数字做参数,表示读取指定字符个数
readlines() 按行读取,一次性读取所有内容,返回一个列表,每一行内容作为一个元素。
readline() 按行读取,但是一次只读取一行。
with 上下文管理
with 语句,不管在处理文件过程中是否发生异常,都能保证 with 语句执行完毕后已经关闭打开的文件句柄。(自动释放对象,防止忘记关闭对象)
示例:
# 读数据操作
f=open('Test.txt','r')
data=f.read() #read函数是读取所有的数据
print(data)
print(data.decode('gbk'))
# print(f.read(12))#read可以指定读几个数据
# # print(f.read())##读完12个,还可以再次使用全读,但光标已经在12个后了,所以读的是12个以后的数据
# print(f.readline()) #读一行数据,readline是一行一行的读的,读所有行是readlinds,返回的是列表数据,一行是一个列表
# print(f.readlines(1))#读一行数据
# f.close() #文件对象关闭掉
# with上下文管理对象
# 优点 自动释放打开关联的对象
with open('Test.txt','a') as f:
# print(f.read())
f.write('我觉得python非常的好学\n')
f=open('Test.txt','rb')#二进制形式读
data=f.read() #读取所有的数据
print(data)#没解码的时候
print(data.decode('gbk'))#将直接读取的二进制数据变为字符串形式,用utf-8会报错,因为写的时候就是gbk(默认gbk,可以用encode规定)
# print(f.read(12))
# # print(f.read())
# print(f.readline()) #读一行数据
# print(f.readlines(1))
# f.close() #文件对象关闭掉,数据量过大时不关闭会造成文件对象泄露
# with上下文管理对象
# 优点 自动释放打开关联的对象
with open('Test.txt','a&#