day 07 文件操作
一、什么是文件?
操作系统提供给用户操作复杂硬件(硬盘)的简易的接口
2.为什么操作文件
人或者应用程序需要永久的保存数据
3.三个使用方法:
f = open()
f.read() # 向操作系统发请求 读取文件内容
f.close() # 告诉操作系统 关闭打开的文件
4.形式:
# r取消转义
f=open(r'地址或相对地址',encoding='utf-8') print(f.read())
5.通过python代码操作文件:
# f是文件对象。f仅仅是一个变量名 你把它看成是一个遥控器
f = open(r'C:\Program Files\feiq\Recv Files\day05\a.txt',encoding='utf-8') print(f) print(f.read()) # 读取文件。
# 此时pyhton中‘f’被垃圾清理掉;而windows系统没有文件,使用.close关闭文件
.close
#windows操作系统默认的编码是gbk.因此需要指定dicoding=utf-8
5. 文件上下文操作
格式:
with open(r'地址或相对地址',encoding='utf-8') as f: print(f.read()) with open(r'C:\Program Files\feiq\Recv Files\day05\a.txt',encoding='utf-8') as f : # f仅仅是一个变量名 你把它看成是一个遥控器。在as后面加入,\表示同时打开多个 print(f) print(f.read())
二、文件的打开模式
r 只读模式
w 只写模式
a 追加写模式
操作文件单位的方式
t 文本文件 # t在使用的时候需要指定encoding参数 如果不指定,默认是操作系统的默认编码;t文本文件只针对文本,不支持图片
b 二进制 #无需指定encoding编码。二进制不需要编码。针对图片等。最主要二进制代码可以发送出去
2.1 格式
1.针对一般文本t
with open(r'相对地址或绝对地址',mode='rt',encoding='utf-8') as f: print(f.read())
2.针对图片b
with open(r'相对地址或绝对地址' mode=rb) as f print(f.read())
注意:
1.mode参数名可以不写,默认就是r和t(只读文本),如果只写w或a,默认加上t,这个t默认也是不写
2.print(f.read())
r模式在打开文件的时候 如果文件不存在 直接报错。这是与w模式和a模式不一样的地方。w和a则会新建一个文档
mode关键字可以不写:如下
with open(r'a.txt',mode='r',encoding='utf-8') as f: with open(r'a.txt','r',encoding='utf-8') as f1: # print(f.readable()) # 是否可读 # print(f.writable()) # 是否可写 read将文件内容一次性读出,不可重复读出。因为光标始终在最后了。以下演示读取两次 # print(f.read()) # print('>>>2:') # print(f.read()) #无结果,但不报错
1 | f文件对象的内置方法(取出文件内容): |
1.readlines print(f.readlines()) # 返回的是一个列表 列表中的一个个元素对应的就是文件的一行行内容 # ['fdsfsdfafasdfasdffsdfas\n', 'fsdf\n', 'sdaf\n', 'sa\n', 'fs\n', 'ef\n', 'f'] .readines的原理就是for循环取值 for line in f: # f可以被for循环 每for循环依次 读一行内容 print(i) # 这个方法就可以解决大文件一次性读取占用内存过高的问题; 对比之前.read()一次读取 2.readlin()# 对比1,没有s,顾名思义,打印一行.readline则读取一行 print(f.readline()) # 注意加,end=‘’取消换行 print(f.readline()) print(f.readline()) print(f.readline())
1 2 3 | w模式:w模式一定要慎用 1. 文件不存在的情况下 自动创建该文件 2. 当文件存在的情况下 会先清空文件内容再写入 |
w模式中f.write()方法:一次写一行 with open(r'xxx.txt','w',encoding='utf-8') as f: print(f.readable()) # 是否可读 print(f.writable()) # 是否可写 f.write('不不不,你没有翻~\n') f.write('不不不,你没有翻~\n') f.write('不不不,你没有翻~\n') f.write('不不不,你没有翻~\r') f.write('不不不,你没有翻~') w模式中f.writelines()方法:一次写多行。传容器类型,将列表写入文件 l = ['不sdffs,sdfs有翻~\n','不sdfsdf不,你sdfsf翻~\n','不sfad不,你没sa翻~\n'] f.writelines(l) # 上下等价 for i in l: # f.write(i)
a模式:追加写模式。在文件末尾写内容
1.当文件不存在的情况下 自动创建该文件 2.当文件存在的情况下,不清空文件内容, 文件的光标会移动文件的最后 with open(r'yyy.txt',mode='a',encoding='utf-8') as f: print(f.readable()) # 是否可读 f.write('我是小尾巴\n')
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析