1.打开文件
在Python中打开文件使用open函数,可以打开一个存在的文件,或者创建一个文件。
语法格式:
open.('文件名称','打开模式') ##File,mode
打开文件时,需要指定文件路径和以什么方式打开文件。
w: 只能写,不能读,文件存在的时候回清空文件后再写入内容;文件不存在的时候会创建文件后写入内容。
# 以字符串的形式来写数据
fobj = open('./Test.txt','w',encoding='utf-8')
## w:打开一个文件只用于写入,如果该文件已经存在则将其覆盖,如果不存在,则创建这个文件
# 开始操作 读/写操作
fobj.write('如果你遇到从前的我')
fobj.write('就请把他带回来')
fobj.close() ##保存+关闭文件
# 以二进制的形式来写数据
## wb:以二进制格式打开一个文件只用于写入,如果该文件已经存在则将其覆盖,如果不存在,则创建这个文件
fobj = open('./Test_1.txt', 'wb') # str->bytes
fobj.write('在乌云和大海之间'.encode('utf-8')) ##以二进制的字节来写文件
fobj.close()
## a:打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾
# 也就是说,新的内容将会被写入到已有的内容之后。如果该文件不存在,创建新文件进行写入。
# fobj = open('./Test.txt', 'a') # 表示追加,不会覆盖文件
# fobj.write('在乌云和大海之间\r\n') ##以二进制的字节来写文件 用a的时候不需要指定encode
# fobj.write('海燕像黑色的闪电\r\n')
# fobj.close()
## ab:以二进制打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾
fobj = open('./Test.txt', 'ab') # 表示追加,不会覆盖文件
fobj.write('在高傲地飞翔\r\n'.encode('utf-8')) ##以二进制的字节来写文件 用a的时候不需要指定encode
fobj.close()
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
2.读/写文件
执行如下读取的操作:
f=open('Test.txt','r')
print(f.read(12)) ##接12个字符的数据
print(f.read()) ##接着上面的读
执行结果如下:
读取一行的操作:
print(f.readline())
f=open('Test.txt','rb')
#
# print(f.read()) ##读取所有的数据
data=f.read() #读的二进制数据
print(data.decode('utf-8'))
##因为写的时候用的utf-8,所以解码可以转换成utf-8,不能转成gbk格式
f.close()###把文件对象给关闭掉
如果数据量很大,不关闭的话会造成计算机的文件对象不能释放,内存会泄漏; 于是就有了上下文管理 with with语句,不管在处理文件过程中是否发生异常,都能保证with语句执行完毕后已经关闭打开的文件句柄。 # with上下文管理对象 # 优点:自动释放关联的对象
with open('Test.txt','r') as file_object:
print(file_object.read())
pass
with open('Test.txt', 'a') as file_object:
file_object.write('今天天气不错\n')
pass
小结
read r r+ rb r+ r r+ 只读 使用一般读取场景 rb rb+ 适用于 文件 图片 视频 音频等 write w w+ wb a ab w wb+ w+ 每次都会去创建文件 二进制读写的时候 要注意编码问题 a ab a+ 在原有文件的基础之后去追加(在文件指针的末尾去追加),并不会每次都创建一个新的文件