当前位置: 首页 > news >正文

python学习笔记6——文件的使用方法

一、文件的类型

1. 文本文件:一般由单一特定编码的字符组成(不能出现多种,如Unicode编码),内容易于统一展示和阅读

——由于存在编码,可以看作存储在磁盘上的长字符串(如一个txt格式的文本文件)

2. 二进制文件:直接由0和1构成,没有统一的字符编码,文件内部数据的组织结构与文件用途有关(如png格式的图片、mkv格式的视频文件)

区别:是否有统一的字符编码

二、文件的操作

1. 打开文件

<变量名> = open(<文件路径及文件名>,<打开模式>) 这个变量相当于指针

模式名称说明文件指针位置文件不存在文件存在
r只读模式只能读取文件内容,不能写入(默认值开头报错FileNotFoundError正常读取
w只写模式只能写入文件内容,不能读取开头创建新文件清空内容后写入
a追加模式在文件末尾追加内容,不能读取末尾创建新文件末尾追加内容
x创建模式创建新文件并写入,文件已存在则报错开头创建新文件报错FileExistsError
b二进制模式以二进制格式读写文件(修饰符)——读取为字节流---
t文本模式以文本格式读写文件(默认修饰符)——读取为字符串---
+读写模式与r/w/x/a一同使用,在原功能基础上增加同时读写操作(修饰符)---

· 不加模式默认为r(只读模式);不加b/t/+默认按照b(文本模式)

· 结束对文件的操作后一定要关闭文件:f.close() —— ‘+’读写模式不需要

▲文件的路径:相对路径和绝对路径

相对路径:同一文件夹下,只需要标注”文件名+.文件格式“

绝对路径:非同一文件夹下,要标注完整路径

path1 = "test.txt" # 相对路径 path2 = "D:/testFile/test.txt" # 绝对路径 # path2 = "D:\\testFile\\test.txt" # 绝对路径另一种写法 f1 = open(path1,"r") f2 = open(path2,"r")

2. 读取文件内容

方法语法说明返回值适用场景
read()file.read(size)读取所有内容或前size长度的内容字符串或字节串小文件一次性读取
readline()file.readline(size)读取一行内容或该行前size长度的内容,指针随之移动到读完位置字符串或字节串逐行处理,节省内存
readlines()file.readlines()读取所有行或hint行列表(每行为一个元素)需要所有行且内存充足
seek()file.seek(offset)改变当前文件操作指针的位置(offset:0为文件开头;1为当前位置开始;2为文件结尾)-移动文件指针到指定位置
for循环for line in file:迭代器方式逐行读取每行字符串大文件逐行处理,最省内存
# 准备测试文件 with open('test.txt', 'w') as f: # f = open("test.txt", 'w') f.write('0123456789ABCDEFGHIJ') # 相比open的优势:无需手动f.close(),自动管理资源关闭文件 # 基础定位 with open('test.txt', 'r') as f: print(f.read(5)) # 01234(读取前5个字符) f.seek(0) # 回到开头 print(f.read(5)) # 01234(再次读取) f.seek(5) # 移动到第5个位置 print(f.read(5)) # 56789 pos = f.tell() # 获取当前位置 print(f"当前位置: {pos}") # 10

3. 写入文件内容

方法语法说明参数类型返回值适用场景
write()file.write(str)写入单个字符串字符串(文本模式)或字节串(二进制模式)写入的字符数/字节数写入单行或少量数据
writelines()file.writelines(sequence)写入多个字符串字符串序列(列表、元组等)无返回值批量写入多行数据
# write() with open('test.txt', 'w') as f: count = f.write('Hello, World!') print(f"写入 {count} 个字符") # 写入 13 个字符 # 写入多行(需要手动添加换行符) with open('test.txt', 'w') as f: f.write('第一行\n') f.write('第二行\n') f.write('第三行') # 注意:若关闭文件后再写入,会覆盖原有内容(此时使用打开模式‘a’,末尾添加) # writelines() lines = ['第一行\n', '第二行\n', '第三行\n'] with open('test.txt', 'w') as f: f.writelines(lines) # 一次性写入所有行 # 注意:不会自动添加换行符 lines_without_newline = ['第一行', '第二行', '第三行'] with open('test.txt', 'w') as f: f.writelines(lines_without_newline) # 结果会连成一行:第一行第二行第三行 # 正确的做法:确保每行都有换行符 lines = [f"{line}\n" for line in ['第一行', '第二行', '第三行']] with open('test.txt', 'w') as f: f.writelines(lines)

三、数据的读取与存储

.csv文件——以逗号分隔数据(可用excel打开),每一行是一维数据(列表类型),通过一种编码表示字符

不同读取方式下会得到不同的数据类型:例如读取 张三,25,北京

读取方式每一行的数据类型示例
csv.reader()列表(List)['张三', '25', '北京']
csv.DictReader()字典(Dict){'姓名': '张三', '年龄': '25', '城市': '北京'}
readlines()/read()字符串(String)'张三,25,北京\n'
# 举例:一维文件 # 写入 ls = ["北京","上海","深圳","广州"] f = open("city.csv","w") str = ','.join(ls) # 转换为字符串 print(str) # 输出:北京,上海,深圳,广州 f.write(str) # 读取 f = open("city.csv","r") info = f.read() # 读取到一个字符串:北京,上海,深圳,广州 ls = info.split(",") # 转换为列表 print(ls) # 输出:['北京','上海','深圳','广州'] f.close() # 举例:二维文件 # 写入 matrix = [[1,2,3],[4,5,6]] f = open("test.csv","w") for row in matrix temp = ','.join(row) f.write(temp+"\n") # 注意换行 f.close() # 读取 f.open("test.csv","r") matrix = [] for line in f line = line.strip("\n") # 注意去除最后的换行符 temp = line.split(",") matrix.append(temp) f.close()
http://www.jsqmd.com/news/617173/

相关文章:

  • 大数据平台HDP、CDH、CDP的区别
  • 魔兽争霸III终极兼容性修复指南:如何在现代系统上完美运行经典游戏
  • ms-swift框架入门指南:命令行与Web-UI两种方式微调Qwen2.5-7B模型
  • 2026年爆款论文降重软件实测TOP5,AIGC率最低降至5%,实测超实用!
  • 租赁系统结构化分析和设计
  • 终极解决方案:3分钟免费搞定Elsevier投稿追踪的Chrome插件
  • CSS如何使用自定义属性实现主题切换_通过CSS变量快速更换配色方案
  • 零基础玩转CYBER-VISION:手把手教你搭建未来科技风目标分割系统
  • 【OSG学习笔记】Day 38: TextureVisitor(纹理访问器)
  • 3步打造高效多平台直播:OBS Multi RTMP插件完整解决方案
  • 从镜像到应用:Qwen3-0.6B-FP8+Chainlit完整搭建流程解析
  • 访谈录音转文字太乱?用BERT文本分割模型,一键智能整理
  • Qwen3.5-4B-Claude-OpusAI应用:轻量级推理服务嵌入内部知识库方案
  • 2024全新3种突破方案解决付费墙限制:Bypass Paywalls Clean全方位应用指南
  • 给出开源租赁系统建设思路
  • 终极指南:如何永久备份QQ空间历史数据?GetQzonehistory完整备份工具解析
  • 终极ModTheSpire完整指南:3步搞定杀戮尖塔模组加载
  • Windows虚拟手柄驱动终极指南:免费实现游戏控制器100%兼容
  • 2026年研究生必备!5款文献综述工具深度测评,AI辅助让综述写作效率提升10倍
  • linux内核 - request_irq 介绍
  • 3分钟搞定!让GitHub界面说中文的终极指南
  • 2026酒店设计公司推荐及行业服务解析 - 品牌排行榜
  • Escrcpy手机投屏:解决安卓手机投屏到电脑的常见问题与实用指南
  • Kimi-VL-A3B-Thinking快速上手:免配置镜像+Chainlit前端调用全流程
  • 反思设计模式:让 LLM 通过自我批判迭代出更优结果
  • 快速上手LongCat动物百变秀:从安装到出图完整流程
  • 2026关务咨询公司哪家好?行业资深机构推荐 - 品牌排行榜
  • 轻量级SaaS租赁系统
  • 2026年酒店设计公司推荐:专业服务团队选择指南 - 品牌排行榜
  • 为啥学C语言绕不开指针?懂它封神,不懂直接劝退,真相太扎心