文件操作补充

文件操作:

重点:

1,文件操作的三步骤:打开文件 使用文件 关闭文件

2,文件操作的三要素:文件源 操作模式 编码

3,with语法 : with open() as 别名,open () as 别名:

4,重点方法 :read() write() readline() close() f.flush() f.seek()

操作模式

主模式:r w a

从模式:b t +

操作方法:

read() readline() readlines()

write() writelines() flush()

光标 seek() tell()

特征:encoding closed()

了解:readable() writeable()name

操作文件步骤;

1,打开文件

? f 被程序持有,文件被操作系统持有

? f = open(‘file.txt‘,‘r‘,encoding=‘utf-8‘)

? del f

? f.close()

2,操作文件

? f.read()

3,关闭文件

? f.close()#####操作系统对文件的持有权 一定要在文件操作完毕后释放

with open(‘file.txt‘,‘r+‘,‘utf-8‘) as f:    date = f.read(6)####指定读取的字节数    print(date)    message1 = f.read(2)#####在当前位置接着在读2个字节    print(message1)        line1= f.readline()###读取一行    print(line1)        lines = f.readlines()#####将所有的行一次性读出来,读出来之后返回的是一个列表 列表的元素是每一行的字符串       with open (‘file.txt‘,‘w+‘,‘utf-8‘) as w:?    print(w.readable())?    print(w.writeable())?    w.write(‘456\n‘)?    w.flush()###当数据量过大时,可以手动将内存中的数据刷新到硬盘中?    w.writelines([‘000\n‘,‘111\n‘,‘222\n‘])?    ###

        ?

在 r read 读模式下,文件必须提前存在,如果不存在 会报错

文件操作

#打开文件f = open(r‘文件路径‘,‘文件的操作模式‘,encoding = ‘utf-8‘)#使用文件f.read()f.write()#关闭文件f.close()#基础读#文件操作模式:r 1,按字符经行操作2,read() 读所有内容, read(10) 指定读取字符长度3,readline() 一次读一行4,readlines() 将文件一行一行读到list中f = open(r‘文件路径‘,‘r‘,encoding = ‘utf-8‘)读模式下,操作文件  文件必须提前存在,否则会报错w 模式下,操作文件 ,如果文件不存在,则会自动创建,文件存在,就会清空重新写?

基础写

文件操作模式:w 文件不存在就新建,存在就清空

1.按照字符经行操作

2,write(‘写入第一行\n写入第一行\n‘)

3,flush()将之前写入到内存中的数据写入到硬盘中

4,writelines(list):list中存放的是一条条文件内容,需要明确\n标识换行

writelines([‘111\n‘,‘222\n‘])

with 语法

操作系统对文件的持有权由with自动管理释放

with open 语法

with open (‘file.txt‘,‘r‘,‘encoding=‘utf-8‘) as f:

? date=f.read()

? print(date)

操作模式

主模式

r:文件必须存在的读

w:文件无需存在的写,无创建,有清空再写

a:文件无需存在的写,无创建,有再文件最后追加写

从模式

t:按文本字符操作数据(默认模式)

b:按文本字节操作数据

+:可读可写

了解:

X:新建文件写,如果文件已经存在,则抛出异常

注:主模式可以单独使用,单独使用一个主模式时,默认的从模式时t,文本模式。从模式必须依赖主模式 才能使用。从模式中,t 和b时相互对立的,二者不可以同时使用,从模式可以选择一个或者两个。主模式选择一个,这样的组合方式有很多中,可读可写追加写at+
#追加模式with open(‘file.text‘,‘a‘,encoding = ‘utf-8‘) as f :    f.write(‘123\n‘)    print(123)    f.write(‘456\n‘)    f.flush()    f.write(789\n) 

字节方式操作文件

b操作模式下,不需要指定encoding,原因时b能对所有类型数据经行操作,包括文本视频音频

而utf-8只是文本文件的编码方式

数据在硬盘中本就是以二进制经行存储的,所以b默认操作就是对数据从硬盘到数据的拷贝

但是如果数据要展现给用户,文本文件就要涉及到解码,其他文件需要通过专业工具打开

with open (‘file.txt‘,‘rb‘) as f :    date = f.read()    print(date)    #但如果数据要展现给用户,文本文件就要涉及到解码,其他文件也是如此    print(date.decode(‘utf-8‘))   ##   r+ 从头开始写,、a+ 从最后开始追加写  w+清空从零开始写

一般读一个文件,写一个文件,一般不在同一个文件中边读边写

文件操作常用的步骤是数据的上传与下载,一般最多的是图片或者excell

#操作模式#主模式‘‘‘r:文件必须存在的读W:文件无需存在的写,有则清空开始写,没有则创建空文件开始写a:文件无需存在的写,无创建,有在文件后面追加写‘‘‘#从模式‘‘‘t:按照文本字符操作数据(默认方式)b:按文本字节操作数据+:可读可写?注:主模式可以单独使用,单独使用一个主模式时,默认的从模式时t,文本模式。从模式必须依赖主模式 才能使用。从模式中,t 和b时相互对立的,二者不可以同时使用,从模式可以选择一个或者两个。主模式选择一个,这样的组合方式有很多中,可读可写追加写at+可以搭配出来的组合有rt wt at rb wb ab rt+ wt+ at+rb+ wb+ ab+‘‘‘

游标操作

大前提:游标操作一定要在b模式下进行操作,因为游标一定按字节进行偏移

seek(偏移量,操作位置)

操作位置:0:从头开始,1从当前位置开始,2从最后位置开始

with open(‘file.txt‘,‘rt‘,encoding=‘utf-8‘) as f:

? d1 = f.read(7)

? print(d1)

? d2 = f.read(2)

? print(d2)

大前提:seek一定在b模式下经行操作,因为seek移动是按照字节经行操作

open(‘file.txt‘,‘wt+‘,encoding = ‘utf-8‘) as f:f.seek(偏移量,操作位置)f.seek(5,0)  #从开始往后移5个字节f.seek(-1,1)# 从当前位置向后偏移1个字节f.close(1,1)#从当前位置向后偏移一个字节f.seek(-5,2)#从末尾向前偏移5个字节?‘‘‘seek(num1,num2)这个移动游标的方法提供了两个位置的参数,第一个位置表示移动的字节数,正数表示向后移动,负数表示向前移动,第二个位置的参数表示移动起始游标的位置,0表示从最开始最前面的位置开始移动,1表示从当前的位置开始移动,2表示从最后面结尾的位置开始移动‘‘‘‘

修改文件

rb 在当前位置经行 覆盖书写

ab+ 可以操作游标,但只对读起作用,写仍然是最后追加

文件的修改不能用ab+ 只能用wb+

with open (‘change.txt‘,‘rb+‘) as f:    date = f.read()    newDate = date.decode(‘utf-8‘).replace(‘16‘,‘016‘)        f.seek(0,0)    f.write(newDate.encode(‘utf-8‘))

复制文件

复制文件也就是将一个文件中的内容,读好之后,在写入另一个文件中:

with open (‘old.txt‘,‘r‘,encoding = ‘utf-8‘) as f1,open(‘new.txt‘,‘w‘,encoding = ‘utf-8‘) as f2:    #文件的循环    for line in f1:####对可读文件对象直接遍历循环,得到的是一行行内容        print(line)? ###复制一张图片?import oswith open (‘001.png‘,‘rb‘) as f1,open(‘002.png‘,‘wb‘) as f2:    for line in f1:        f2.write(line)os.remove(r‘D:\pythonstudy\execise\homework\day3\001.png‘)

秒传案例

####计算得到秒传依据with open (‘002.png‘,‘rb‘) as f :    date = f,read()    #print(date)    length = len(date)    print(length)    # 设置秒传算法,1 截取部分字节 2 加密字节得算法    # 1,从头开始读10个字节 中间读10个字节  末尾读10个字节    # 2,将所有数据经行拼接    f.seek(0,0)####把光标移到最前面最开始的位置    d1 = f.read(10)    f.seek(length//2,0)    d2 = f.read(10)    f.seek(-10,2)###将光标移到最后末尾倒数10个字节    d3 = f.read(10)    mk = d1 +d2 +d3    print(mk)#####实现秒传with open (‘002.png‘,‘rb‘) as f :    new_mk =b‘‘    f.seek(0,0)    new_mk +=f.read(10)    f.seek(length//2,0)    new_mk  += f.read(10)    f.seek(-10,2)     new_mk +=f.read(10)if new_mk == mk:    print(‘秒传‘)else:    print(‘老老实实慢慢传吧‘)

文件的遍历

##最常用读写得操作。直接将一个文件的内容复制都另一个文件中with open(‘source‘,‘r‘,encoding = ‘utf-8‘) as f1,open(‘target‘,‘w‘,encoding = ‘utf-8‘) as f2:    for line in f1:        f2.write(line)       

原文地址:https://www.cnblogs.com/1832921tongjieducn/p/10652450.html

时间: 2024-10-19 09:36:44

文件操作补充的相关文章

八,文件操作补充

控制文件内指针移动seek() 只有'rt'模式下的read(n)n代表移动字符数,以外的都是表示移动字节数 seek(offset,whence)中两个参数: offset代表指针移动字节数,whence代表从哪里开始移动 whence = 0: 参照文件开头(默认的),可以在t和b模式下使用 whence = 1: 参照当前所在的位置,必须在b模式下用 whence = 2: 参照文件末尾,必须在b模式下用 文件修改的两种方式 修改文件的方式一: 1 将文件内容由硬盘全部读入内存 2 在内存

python学习点滴记录-Day02补充-文件操作

字符编码: 把人类的字符翻译成计算机能认识的数字 字符编码表 存放着人类字符和计算机数字的对应关系表 ascii.gbk.utf-8.unicode unicode>encode(utf8)>bytes bytes>decode(utf8)>unicode 文件处理补充: 字符以什么格式编码的,就要以什么格式解码 文件的打开模式 文件句柄 = open('文件路径', '模式') 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文

2019-07-08 文件操作的补充

一.其他模式补充 之前学的r(只能读)/w(只能写)/a(只能写) 今天学的: r+/w+/a+(都变成读写模式) with open(r'test',mode='r+',encoding='utf-8') as f: print(f.readable()) print(f.writable()) print(f.readline()) f.write('嘿嘿嘿') with open(r'test',mode='w+',encoding='utf-8') as f: print(f.reada

3.文件操作及编码解码补充

文件操作:1.打开文件f = open(name,mode)name:文件名的字符串mode:访问模式(只读,写入,追加等)2.读写等操作date = f.read()3.关闭文件f.close() 模式详解:如果省略书写访问模式,则访问模式默认为r或rb.通常只用主模式读写文件r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式.1.有文件就读取,无文件则报错.2.r模式不支持写入,用.write()函数则报错rb 以二进制格式打开一个文件用于只读.文件指针将会放在文件的开头.这

C语言文件操作

文件操作 文件的打开 FILE * fopen(const char filename,const char * mode); 文件的打开操作 fopen 打开一个文件 (几种操作文件的组合) 文件的关闭操作 int fclose(FILE *fp); fclose 关闭一个文件 文件的读写操作 读取单个字符 fgetc 从文件中读取一个字符 int fgetc(FILE * fp); fputc 写一个字符到文件中去 int fput(int c,FILE * fp); 读取字符串 fgets

python第三节函数,文件操作

文件操作#以读的方式打开文件# f=open('c.txt',encoding='utf-8')# print(f)# data = f.read() #以读的方式打开# print(data)# print(f.closed) #判断文件是否是关闭状态# print(f.encoding)#输出文件编码# print(f.name)   #输出文件名称# print(f.readable())#判断文件是否是读模式# print(f.readline(),end='')#一次只读一行,end去

Windows DIB文件操作详解-1.DIB的读入、保存和显示

DIB(设备无关位图)是存储在磁盘上的位图文件,可以从磁盘读到内存中或从内存保存到磁盘上,它的磁盘文件结构是标准化的,在Linux.Unix及Windows上都可以以同样效果显示.位图是最接近硬件的图像格式,Windows显示的核心是位图,它的SDK API专门提供了一组用于操作DIB文件的函数.但是由于这样或那样的原因,高效合理的使用这些DIB API是需要了解不少历史和使用背景的,在这里我抽茧剥丝介绍和演示DIB的使用,相信对你更好的使用DIB文件有帮助,由于DIB函数比较多,这里分为三部分

重修课程day6(python基础4之集合和文件操作)

一 字典属性方法补充 1 clear  :清空 2 Cory:拷贝 3 fromkeys:生成一个字典,类下面的一个属性方法 4 pop  :删除 5 popitem  : 删除整个元素 6 setdefault:只添加不修改 7 update :存在的话跟新,没有就会添加 二 集合以及集合的功能 集合是一个不存在重复的值,而且还是无序的. 1 add :添加不可能重复 2 clear :清空 3 copy :拷贝 4 difference :差集只存在一个集合的 5 difference_up

9、文件操作

一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 f=open('a.txt','w') f.write('111111\n') f.close() 二.基本操作 2.1 文件编码 #不指定打开编码,默认使用操作系统的编码,windows为gbk,linux为utf-8,与解释器编码无关 f=open('chenli.txt',encoding='gbk') #在windows中默认使用的也是gbk编码,此时不指定编码也行 f.read() 2.2 文件