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

python学习笔记(day3):文件操作与CSV文件处理

今天是学习python的第三天,和我一起来梳理一下今天学习的知识吧

一、今日学习目录

  1. open()函数的使用

  2. read()、readline()、readlines()方法

  3. write()与writelines()方法

  4. 绝对路径与相对路径

  5. CSV文件操作

  6. 库的相关操作

二、文件操作基础

1. open()函数

基本语法

f = open(文件路径, 模式, encoding='编码方式')

常用模式

模式说明
'r'只读模式(默认)
'w'写入模式(会覆盖原内容)
'a'追加模式
'x'创建新文件写入
'b'二进制模式
'+'读写模式

示例代码

# 只读模式打开文件 f = open('test.txt', 'r', encoding='utf-8') print(f.read()) f.close() # 记得关闭文件

2. read()、readline()、readlines()详解

#假如f为一个文件对象类型

read() - 读取全部内容

content = f.read() print(content)

readline() - 逐行读取

# 读取第一行 line1 = f.readline() print(f"第一行:{line1}") # 读取第二行 line2 = f.readline() print(f"第二行:{line2}")

readlines() - 读取所有行到列表

# 返回列表,每个元素是一行 lines = f.readlines() print(f"总行数:{len(lines)}") for i, line in enumerate(lines, 1): print(f"第{i}行:{line.strip()}")
  • read()→ 读全部 → 返回字符串
  • readline()→ 只读一行 → 返回字符串
  • readlines()→ 读全部行 → 返回列表

三、文件写入操作

3. write() - 写入字符串

# 写入模式(会覆盖) with open('output.txt', 'w', encoding='utf-8') as f: f.write('Hello, Python!\n') f.write('这是第二行\n') # 写入多个字符串 with open('output.txt', 'w', encoding='utf-8') as f: f.write('第一行\n第二行\n第三行')

4. writelines() - 写入字符串列表

python

# 准备数据 lines = ['苹果\n', '香蕉\n', '橙子\n'] # 需要手动添加换行符 with open('fruits.txt', 'w', encoding='utf-8') as f: f.writelines(lines) # 更灵活的方式 fruits = ['苹果', '香蕉', '橙子', '葡萄'] with open('fruits2.txt', 'w', encoding='utf-8') as f: f.writelines(f"{fruit}\n" for fruit in fruits)
  • write():写入单个字符串

  • writelines():写入字符串列表,不会自动添加换行符

四、路径管理

绝对路径 vs 相对路径

绝对路径:从根目录开始的完整路径

python

# Windows示例 file_path = r'C:\Users\YourName\Documents\file.txt'

相对路径:相对于当前工作目录的路径

# 当前目录下的文件 with open('data.txt', 'r') as f: # 子目录下的文件 with open('subfolder/data.txt', 'r') as f: # 上级目录下的文件 with open('../parent_data.txt', 'r') as f: pass

五、CSV文件处理

什么是CSV?

CSV是逗号分隔值文件,常用在数据交换中。

读取CSV文件

使用基本的文件操作,例:

f=open('中国十二时辰.csv','r',encoding='utf-8') ls=[] for line in f: line=line.replace('\n','') ls.append(line.split(','))

写入CSV文件

这里open()函数第二个参数如果是w表示写入,当前目录如果没有该文件则会创建一个该文件

write()方法可以写入字符串

r2=open('你好.csv','w') r2.write('Hello')

综合实例1:实现读取"中国十二时辰.csv"文件

第一步:复制该文件的存放路径(或者直接将该文件放入你当前的工作文件)

第二步:读取该文件

f=open('中国十二时辰.csv','r',encoding='utf-8')

第三步:进行一系列处理,具体如下:

f=open('中国十二时辰.csv','r',encoding='utf-8') # 定义空列表,用于存放读取到的时辰二维数据 ls=[] # 逐行遍历打开的csv文件对象f for line in f: # 去除每行末尾的换行符 line=line.replace('\n','') # 以逗号切割每行字符串,转为列表并添加到总列表中 ls.append(line.split(',')) # 开启无限循环,持续接收用户输入查询 while True: # 接收用户输入的时间字符串 time_num=input("请输入时间:") # 异常捕获,防止输入格式非法导致程序崩溃 try: # 校验小时、分钟数值范围是否合法 if (24<int(time_num[0:2]) or int(time_num[0:2])<0 or 60<int(time_num[3:]) or int(time_num[3:])<0) : print("输入时间格式有误") continue except: # 捕获格式错误、下标越界、非数字等异常 print("输入时间格式有误") continue # 将输入的时分统一换算为总分钟数,方便区间比对 time_1=int(time_num[0:2])*60+int(time_num[3:]) # 遍历时辰数据,跳过表头第一行 for line in ls[1:]: # 提取当前时辰开始时间,换算为总分钟 time_first=int(line[1][0:2])*60+int(line[1][3:5]) # 提取当前时辰结束时间,换算为总分钟 time_last=int(line[1][6:8])*60+int(line[1][9:11]) # 判断输入时间是否在当前时辰区间内 if time_first<=time_1 and time_last>=time_1: # 打印匹配到的时辰、属相、描述信息 print('时辰:',line[0],'\n属相:',line[2],'\n别名和描述:',line[3]) break # 单独处理子时跨天特殊时间段:23点~24点 与 0点~1点 elif (23*60<time_1<=24*60)or(0<=time_1<=1*60): print('时辰:',line[0],'\n属相:',line[2],'\n别名和描述:',line[3]) break; # 关闭文件,释放资源 f.close()

综合实例2:实现整理HTML网页内容

直接放原码

# 打开网页源码文件,以只读模式读取,使用utf-8编码保证中文不乱码 r1=open('中国城市名称大全.html','r',encoding='utf-8') # 新建/打开csv文件,以写入模式存储提取出来的城市名 r2=open('中国城市大全.csv','w') # 定义空列表,用于存放提取出的所有城市名称 a=[] # 逐行读取html文件内容 for line in r1: # 判断当前行是否包含城市信息所在的div标签 if '<div class="para" label-module="para">' in line: # 对该行字符串进行分割,提取出城市名称,并按空格分割成列表,添加到a中 a+=line.split('>')[1].split('<')[0].split(' ') # 遍历所有提取到的城市名称,逐个写入csv文件 for i in a: # 每个城市名后面加逗号,符合csv文件格式 r2.write(i+',') # 关闭读取的html文件 r1.close() # 关闭写入的csv文件 r2.close()

六、库的相关操作

1. 库的安装

pip install 库名 # 示例:安装数据处理库 pip install pandas

2. 查看已安装库

# 查看当前环境所有已安装第三方库及版本 pip list # 精准查询单个库是否安装、版本、路径 pip show 库名

3. 库的卸载

pip uninstall 库名

4. 库版本升级

pip install --upgrade 库名

5. 导入库使用

# 方式1:直接导入 import time # 方式2:别名导入(简化书写,常用) import time as t

今天的内容就这么多啦!明天再分享更多的python知识,大家的点赞关注是我更新的动力!


💪 坚持打卡第3天!掌握文件操作,Python技能又进一步!

http://www.jsqmd.com/news/715690/

相关文章:

  • 如何高效下载全网资源:Res-Downloader 智能嗅探工具完全指南
  • 大模型多智能体模式详解:新手程序员必备,附收藏指南!
  • 深入S32K3芯片内部:图解FCCU状态机与安全机制(从CONFIG到FAULT的完整流程)
  • STM32 HAL库驱动DRV8301 SPI通信全攻略:从硬件连接到寄存器读写(附避坑清单)
  • AI写专著必备攻略:10种AI工具大揭秘,高效完成20万字专著创作!
  • 通达信缠论插件终极指南:3步实现自动化技术分析,告别手动画线困扰
  • CMake死活找不到OpenCV?别急着重装,先试试这几招(附Windows/Linux/Mac通用解法)
  • 别再手动翻文档了!用CrewAI的这5个搜索工具,5分钟搞定PDF、CSV、网页信息提取
  • 3步掌握Jasminum:Zotero中文文献管理效率提升300%的终极方案
  • 阶跃星辰发布新一代语音识别模型 StepAudio 2.5 ASR,推理速度提升 400%、成本直降 80%
  • League Akari:英雄联盟玩家的终极效率工具箱完整指南
  • Whisper-large-v3实战:客服录音转文字,关键词快速定位
  • 识局者生:在亚马逊,为何“不做什么”比“能做什么”更重要一万倍
  • 从RAW到YUV420:手把手教你用V4L2调试摄像头图像格式与解决画面异常
  • 智能制造系统中动态不确定问题解决方法
  • 3个核心模块揭秘:如何用SMUDebugTool深度探索AMD Ryzen处理器内部世界?
  • LinkSwift:终极网盘直链下载助手完整使用指南
  • Windows旧版本兼容性挑战与cpp-httplib现代化适配策略
  • League Akari:如何用本地化智能工具提升英雄联盟游戏体验
  • Ryzen处理器底层调试:SMUDebugTool的技术架构与实践范式
  • 告别手动配置:OpCore Simplify如何让黑苹果EFI构建变得简单
  • 生产RFID电子标签卡公司有哪些
  • 别再手动commit了!用Dockerfile一键构建带Conda虚拟环境的Python应用镜像(附完整Dockerfile)
  • 郭明錤爆料:OpenAI 计划 2028 年量产手机,欲重构手机交互逻辑
  • 如何彻底解决MoviePilot自动化管理中的115网盘风控问题:终极指南
  • ERNIE-4.5-0.3B-PT实战:vLLM高效部署,Chainlit打造可视化对话界面
  • Tagetik-如何查找Excel按钮对应存储过程?
  • 如何通过后端 API 同时向两个 Webhook 发送表单数据
  • [具身智能-473]:OpenAI Chat Completions API详细解析
  • 电脑桌面没有wifi图标了导致连接不上网络,解决方法