第十一天 第十章 文件操作
# 想要操作文件,首先要创建或者打开指定的文件并创建文件对象:file = opend(filename[,mode[,buffering]]) # file:被创建的文件对象 # filename:要创建或打开文件的文件名 # mode:可选参数,用于指定文件的打开模式,默认是只读‘r’ # r:只读,文件指针在文件开头 # rb:二进制模式打开文件,并采用只读模式,一般用于图片、声音等 # r+:可以读,也可以写(覆盖原内容) # rb+:二进制的读写模式 # w:只写模式打开文件 # wb:二进制格式打开文件,只写模式,一般用于图片、声音等 # w+:打开文件后,先清空文件内容,然后再读写 # wb+:二进制模式打开文件,采用读写模式 # a:以追加模式打开文件,文件指针在文件的末尾,否则创建新文件用于写入 # ab:二进制追加模式 # a+:以读写模式打开文件,文件指针在文件末尾 # ab+:二进制读写模式打开文件,指针在文件末尾 # buffering:可选参数,指定读写文件的缓冲模式,0为不缓存;1为缓存;如果大于1则表示缓存区的大小;默认为缓存模式。 # 打开一个不存在的文件需要用w/w+/a/a+这些打开模式,否则会报错 print('='*10,'蚂蚁庄园','='*10) file = open('message.txt','r') print('即将显示...') # 以二进制形式打开文件 file = open('demo.jpg','rb') print(file) # <_io.BufferedReader name='demo.jpg'> # BufferedReader对象产生后,可以用其它第三方模块进行处理 # 打开文件时指定编码方式:open()函数默认以GBK编码,如果打开其它编码的文件,将会抛出异常。 file = open('message.txt','r',encoding='utf-8') file.close() # 没使用with方法时,必须用此命令将写入的内容保存到文本文件并关闭文件 # 关闭文件:file.close() # close()方法先刷新缓冲区中的还没有写入的信息,然后再关闭文件,这样可以将没有写入到文件的内容写入到文件中。 # 如果想写入文件,但不想立刻关闭文件,可以用flush()方法将内容写入文本内容 # 打开文件时使用with语句:这是为了解决忘记关闭文件或文件关闭异常的情况而设计的 with open('message.txt','a+') as file: file.write('hello world') file.write('good') # file = open('aa.txt','w') # file.writelines('hello world\n') # file.writelines('hello world\n') # file.close() # 读取文件 # 读取指定字符:file.read([size]) # file:打开的文件对象 # size:指定要读取的字符个数,如果省略则读取所有内容 file = open('aa.txt','r') print(file.read(8)) # 读取从文件指针往后数8个字符个数 print(file.seek(2)) # 设置文件指针位置,seek(a,b) a是移动的字符个数,b参数有3个值,默认是0,0表示从开头计算,1表示从当前位置计算,2表示从文件尾计算 print(file.read(8)) # 读取从文件指针往后数8个字符个数 file.close() # seek()和read()的不同:seek不管你是GBK还是UTF8,英文和数字都是按一个字符计算 # 读取一行 with open('aa.txt','r') as file: while True: line = file.readline() print(line,end='') if line == '': break # 如果文件很大,read()会一次性读取全部内容,容易造成内存不足 # 读取全部行:readlines()读取全部行,返回一个列表,每一行是列表的一个元素 file.readlines() # 如果文件很大,读取时会很慢