python学习笔记(day3):文件操作与CSV文件处理
·
今天是学习python的第三天,和我一起来梳理一下今天学习的知识吧
一、今日学习目录
-
open()函数的使用
-
read()、readline()、readlines()方法
-
write()与writelines()方法
-
绝对路径与相对路径
-
CSV文件操作
-
库的相关操作
二、文件操作基础
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技能又进一步!
更多推荐



所有评论(0)