作用:数据经常写在文件中的,读取数据、写入数据、复制一张图片等
打开文件-读取文件数据-写入数据-关闭文件
一、读取文件
file = open("test.txt") # 打开文件 data = file.read() # 读取数据 print(data) file.close() # 关闭文件
二、写入文件
在w模式下,如果之前没有这个文件,将会创建新文件
写入中文需要制定编码格式为utf-8
file=open('new_file.txt','w',encoding='utf-8') file.write('新的数据') file.close()
坑1:如果之前已经存在同名文件,使用mode='w'模式会覆盖之前的文件内容
mode = 'w':覆盖模式
mode = 'a':追加模式
mode = 'x':原创模式。如有同名文件,会报错FileExistsError
file=open('new_file.txt','x',encoding='utf-8') #发现是同名文件,直接报错,不允许写入 file.write('hhhhhh') file.close()
mode = 'r':读取模式,是默认参数,可以省略
file=open('new_file.txt','r',encoding='utf-8') #mode='r'默认是'r'
mode = 'b':二进制模式,要和其他模式组合使用rb/wb/ab/xb ,'t'文本,默认rt/wt/xt/at
图片是二进制模式
file=open('new_file.gif','rt',encoding='utf-8') #报错,格式不对,因为图片格式为二进制,应该改为下一个代码 file.read() file.close()
file=open('new_file.gif','rb',encoding='utf-8') file.read() file.close()
'+'既可以读也可以写,如r+
file=open('new_file.gif','r+',encoding='utf-8') #'r+' 不覆盖,追加模式 file.read() file.write('abcdefg') file.close()
f.read()读取出来的数据是字符串类型
f.open('demo.txt') data=f.read() #读取到的是字符串 print(data) 字符串格式使用换行符去分割成字典: new_data=data.split(' ') print(new_data)
注意:注意:打开一个文件,光标在开始的位置
打开一个文件并写入完毕,光标移动到最后的位置
如果打开一个文件并写入之后,不关闭文件,再读取文件,什么也读不到
读取文件是根据光标的移动读取的,读取一个字符,就把光标移动一个字符
写入也是一样的,每写一个字符,就移动一个字符的光标
三、readline( )按行读取
readline( )读取每一行,会存放到列表当中,每一个行的内容就是列表的一个元素
read( )得到的是整个一个字符串
f=open('demo1.txt') lines=f.readlines() print(lines) #读取结果是:['new line ', 'two line ', 'three line'] # 分行打印 for line in lines: print(line.strip())
四、with
with 语句可以让我们节省关闭文件的操作
with open('demo1.txt') as f: #打开文件,用f去接收 f.read()