文件处理

文件处理

什么事文件:应用程序提供一种操作硬盘的抽象单位

为什么要用文件:用户、应用程序对文件读写操作系统转换成具体的硬盘操作,所以用户、应 用程序通过简单地读写文件,间接的控制哦复杂的应聘的存取操作,实现将内存中对的数据永久保存到硬盘中

如何用文件

用这种形式打开文件

with open ('text.txt','r',encoding='utf8') as f

第一个元素文件名,第二个:三种模式——r(只读),w(只写),a(追加),[同时还有两种文件的处理模式:t(处理大部分文档<默认>)与b(处理音频,图片,转换为Bytes)模式]

r模式:(只读模式)文件不存在,报错,文件存在指针跳到文件的开头

w模式:(只写模式)文件不存在创建文件,文件存在清空文件,文件指针自然跑到开头

a模式:(追加模式)文件不存在时会创建文档,文件存在文件指针移动到最后

w与a的异同:

1,相同:在打开文件不关闭的情况下,连续写入,新写的内容总会跟到前面的内容之后,

2,不同点:以A模式重新打开文件不会清空文件内容,会将文件指针已到末尾,新内容添加到最后

t , b 模式不能单独使用,必须与r/w/a其中一个联合使用

默认t:文本模式:

1.读写文件都是以字符串为单位

2.只能针对文本文件

3,必须指定encoding参数

b:二进制模式

1.读写文件都是二进制为单位

2.可以针对所有文件

3.一定不能指定encoding参数

对比:

1.操作文本文件时候T模式帮我们省去了编码解码的环节,

2,对于非文本:音频,视频等职能使用B模式

操作——如何用:

f.read ()一次性读取所有内容,文件指针移到文件末尾

f.readline()一次性读取一行内容,贯标移动到第二行开头

f.readlins()读取每一行内容,返回列表

为了防止内存溢出

用以下两种方法:

with open ('a.txt','r',encoding = "utf8")as f:    
for line in f:        
print(line,end='')

with open ('1.mp4','rb') as f:

while True:

data = f.read (1024)#每次只读取1024个bytes到内存中

if len (data) == 0:

break

print(data)

f,readable()#是否可读

f.writable()#是否可写

主动控制文件内指针移动:

seek(x,y),x--->字符相对偏移动,y---->模式选择(0模式:指针从文件开头开始移动,1,模式:指针从当前位置开始移动,2模式:指针从文件尾开始移动)

with open( 'b.txt','r',encoding='utf8')as f: f.seek(3,0) print(f.tell())#返回指针在的位数,bytes print(f.read())

with open( 'b.txt','rb')as f: f.seek(3,1) print(f.tell())#返回指针在的位数,bytes

f.seek(3, 1)
print(f.tell()) # 返回指针在的位数,bytes

with open ('b.txt','rb')as f: f.seek(0,2) print(f.tell()) f.seek(-3,2) print(f.read().decode('utf8')) 文件修改 方式一:读取文件,再打开文件写入修改后的文件 with open ('b.txt','r',encoding='utf8') as f: date = f.read() with open('b.txt','w',encoding='utf8')as f: f.write(date.replace('qw','ACE')) 方式一:利用OS模块,直接删除以前的文件夹,替换文件名 import os with open ('b.txt','r',encoding='utf8')as rf,\ open ('b_b.txt','w',encoding='utf8')as wf: for line in rf: wf.write(line.replace('ACE','TANK')) os.remove('b.txt') os.rename('b_b.txt','b.txt')

 

posted @ 2019-11-08 21:57  D山仙  阅读(133)  评论(0编辑  收藏  举报