九、python文件的操作

作用:数据经常写在文件中的,读取数据、写入数据、复制一张图片等

打开文件-读取文件数据-写入数据-关闭文件

一、读取文件

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()
原文地址:https://www.cnblogs.com/zhangjx2457/p/13628676.html