#一、文件操作简介
#1.什么是文件
#操作系统提供给用户操作复杂硬件(硬盘)的简易接口
#2.为什么要操作文件
#人或应用程序需要永久保存的数据
#3.如何使用
# x = open(r'D:PYCM文件a.txt',encoding='utf-8') # r 取消转义 # print(x) # x是文件对象 # print(x.read()) # windows操作系统默认的编码是’gbk' # x.read() # 向操作系统请求,读取文件内容 # x.close() # 告诉操作系统,关闭打开的文件 # with open(r'D:PYCM文件a.txt',encoding='utf-8') as x , # open(r'D:PYCM文件.txt', encoding='utf-8') as x1: # , 支持多个文件 # print(x) # print(x.read())
二、操作文件的单位
# t 文本文件 t在使用的时候需要指定encoding参数,如果这个t不写默认就是t
# b 二进制 一定不能指定encoding参数
# mode参数可以不写,不写默认是rt,只读的文本文件,这个t不写默认就是t
#第一种:t 文本文件 # with open(r'D:PYCM文件a.txt',mode='rt',encoding='utf-8') as x: # print(x.readable()) # 是否可读 打印的值:True # print(x.writable()) # 是否可写 打印的值:False # print(x.read()) # 一次性将"a.txt"文件内容全部读出 #第二种: b 二进制 不需要编码参数 with open(r'D:PYCM文件a.txt',mode='rb') as x: print(x.readable()) # 是否可读 打印的值:True print(x.writable()) # 是否可写 打印的值:False print(x.read()) # 一次性将"a.txt"文件内容全部读出
三、文件处理模式
# r # 只读模式
# w # 只写模式
# a # 追加写模式
第一种:r模式
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#注意: # 1.r模式再打开文件的时候,如果文件不存在,直接报错 # 2.文件路径可以写相对路径,但是必须注意该文件不许与执行文件在同一层文件下 # with open(r'D:PYCM文件a.txt',mode='rt',encoding='utf-8') as x: # print(x.readable()) # 是否可读 打印的值:True # print(x.writable()) # 是否可写 打印的值:False # print('>>1:') # print(x.read()) # 一次性将文件内容全部读出 # print('>>2:') # print(x.read()) # 读完一次之后,文件光标已经到文件末尾了,没有内容可读 # print(x.readlines()) # 返回的是一个列表,列表中的一个个元素对应的就是文件的一行行内容 # for i in x: # print(i) # 这个方法 就可以解决大文件一次性读取占用内存过高的问题 # print(x.readline()) # 只读取文件一行内容
第二种:w模式
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#注意: # 1.文件不存在的情况下 自动创建该文件 # 2.当文件存在的情况下 会先清空文件内容再写入 # with open(r'D:PYCM文件a.txt',mode='w',encoding='utf-8') as x: # print(x.readable()) # 是否可读 打印的值:False # print(x.writable()) # 是否可写 打印的值:True # x.write('把一切献给现在 ') # x.write('把一切献给现在 ') # 或者 代表换行 # x.write('把一切献给现在 ') # x.write('把一切献给现在') # 打印结果:会在“a.txt”显示4行 '把一切献给现在' # l = ['出你的就是能促进,s检查司机说 ','循环水泵垂涎三尺,你sdfsf翻~ ','不sfad不,你没sa翻~ '] # x.writelines(l) # 会将l列表里的内容写入“a.txt”中,如果该文件里有内容,则会替换原文件的内容
第三种:a模式
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#注意: # 1.当文件不存在的情况下 自动创建该文件 # 2.当文件存在的情况下,不清空文件内容, 文件的光标会移动文件的最后 # with open(r'bbb.txt',mode='a',encoding='utf-8') as f: # print(f.readable()) # 是否可读 # print(f.writable()) # 是否可写 # f.write('呢 ') # 会将此内容写入原本不存在的"bbb.txt"文件中,如果"bbb.txt"文件存在,则会写入该文件内容里最后一个光标后面