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写入时需要自己加上\n换行,否则不会换行
f.writelines(['dsadad3\n','dsaasda\n','dasda\n'])#写入一个列表行
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\n22222\n')    #针对文本模式的写,需要自己写换行符
f.write('1111\n2222\n'.encode('utf-8'))    #针对b模式的写,需要自己写换行符
f.writelines(['333\n','444\n'])    #文件模式的多行写入
f.writelines('333\n',encoding='utf-8'),'444\n'.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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值