Python中的文件操作——09

open方法打开文件,r,只可读模式,不能写,文件的内容只能是字符串

f = open('xxx','r','encoding='utf-8')
data = f.read()#以字符串形式读取整个文件
data1 = f.readlines()#列表的形式,每行为一个元素
f.close()
print(f1.readable()) #判断是否可读,返回bool值


w,只写模式,不能读

f = open('xxx','w',encoding='utf-8')#如果存在xxx文件则覆盖,如果不存在xxx文件则新建
f.write('dsadasd')
f.write('dsdsadaw1')#当多行write写入时需要自己加上
换行,否则不会换行
f.writelines(['dsadad3
','dsaasda
','dasda
'])#写入一个列表行
f.close()

a,追加模式,只追加内容,在文件的最后开始写

f = open('xxx','a',encoding='utf-8')
f.write('winsdom')
f.close()#追加模式   写在原文件的最后

b,对于非文本文件,我们只能使用b模式,‘b’表示以字节的方式操作(所有的文件也都是以字节飞形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jpg格式、视频文件的avi格式)

rb

wb

ab

补充:以b的方式打开文件时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

‘+’ 表示可以同时读写某个文件

‘r+’  读写(可读,可写)

‘w+’  写读(可读,可写)

‘a+’  写读(可读,可写)

‘x’  只写模式(不可读,不存在创建,存在则报错)

‘x+’  写读(可读,可写)

‘xb’

操作文件的方法

f.read()         #读取所有内容,光标移动到文件末尾
f.readline()    #读取一行内容,光标移动到第二行首部
f.readlines()    #以列表的形式读取全部内容(读取每一行,存放于列表中)


f.write('11111
22222
')    #针对文本模式的写,需要自己写换行符
f.write('1111
2222
'.encode('utf-8'))    #针对b模式的写,需要自己写换行符
f.writelines(['333
','444
'])    #文件模式的多行写入
f.writelines('333
',encoding='utf-8'),'444
'.encode('utf-8')])    #b模式

f.readable()#判断文件是否可读
f.writable()#判断文件是否可写
f.closed#判断文件是否关闭
f.encoding#如果文件打开模式为b,则没有该属性
f.flush#立刻将文件内容从内存刷到硬盘
f.name        

文件中的光标移动

read(3)

1、文件打开方式为文本模式时,代表读取3个字符

2、文件打开方式为b模式时,代表读取3个字节

seek,tell,truncate

1、seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

2、truncate是截断文件,所以文件的打开方式必须是可写,但是不能用w或w+的方式打开,因为那样相当于直接清空文件了,所以truncate要在r+或者a或者a+的模式下测试效果

seek实现

f = open('fly away1','rb')   #使用seek(0,2)倒着读文件最后一行
for i in f:
    offs = -10
    while True:
        f.seek(offs,2)
        data = f.readlines()
        if len(data)>1:
            print('最后一行是:%s',data[-1].decode('utf-8'))
            break
        offs *= 2
f.close()
原文地址:https://www.cnblogs.com/winsdom/p/9112283.html