苦练Python第45天:使用open函数读取文件内容

前言

大家好,我是倔强青铜三 。欢迎关注我,微信公众号:倔强青铜三。欢迎点赞、收藏、关注,一键三连!!!

欢迎来到**苦练Python第 45 天!**今天掌握开发者必备神技------用 open() 安全、高效地读取任何文件。


📥 1. open() 基础语法

python 复制代码
file = open("文件名.txt", "模式")

常用模式

  • "r" 只读(默认)
  • "w" 写入(覆盖)
  • "a" 追加
  • "b" 二进制(图片等)
  • "t" 文本(默认)

别忘了 关闭 文件:

python 复制代码
file = open("sample.txt", "r")
content = file.read()
file.close()

📄 2. 一口气读完

python 复制代码
with open("sample.txt", "r") as f:
    data = f.read()
    print(data)

with 语句自动关闭文件,出异常也不怕。


📜 3. 逐行读取

readline() 一次一行

python 复制代码
with open("sample.txt", "r") as f:
    line = f.readline()
    while line:
        print(line.strip())
        line = f.readline()

readlines() 一次全部行 → 列表

python 复制代码
with open("sample.txt", "r") as f:
    lines = f.readlines()
    print(lines)

📏 4. 读取指定字符数

python 复制代码
with open("sample.txt", "r") as f:
    first_10_chars = f.read(10)
    print(first_10_chars)

🔄 5. 文件对象可迭代

大文件省内存写法:

python 复制代码
with open("sample.txt", "r") as f:
    for line in f:
        print(line.strip())

🧨 6. 异常安全处理

python 复制代码
try:
    with open("non_existent.txt", "r") as f:
        data = f.read()
except FileNotFoundError:
    print("文件不存在!")
except IOError:
    print("读取错误!")

🛠️ 实战:统计文件词数

python 复制代码
with open("sample.txt", "r") as f:
    text = f.read()
    words = text.split()
    print("总词数:", len(words))

📌 小结

  • open(filename, "r") 读取
  • with open() 自动关闭
  • read() / readline() / readlines() 灵活切换
  • try-except 捕获异常
  • 迭代文件对象,大文件也流畅

🧪 练习任务

1. 读取文件并统计:总行数、总词数、总字符数

python 复制代码
# 使用 open() 统计 sample.txt 的行数、词数、字符数
with open("sample.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()          # 读取所有行到列表

total_lines = len(lines)           # 行数
# 合并所有行再拆分单词,防止行尾空格影响
total_words = len("".join(lines).split())
total_chars = sum(len(line) for line in lines)  # 每行字符数累加

print(f"总行数: {total_lines}")
print(f"总词数: {total_words}")
print(f"总字符数: {total_chars}")

2. 只打印包含 "ERROR" 的日志行

python 复制代码
# 使用 open() 逐行读取 log.txt,仅输出包含 ERROR 的行
with open("log.txt", "r", encoding="utf-8") as f:
    for line in f:                 # 逐行迭代,节省内存
        if "ERROR" in line:
            print(line.rstrip())   # rstrip() 去掉右侧换行与空格

3. 读取文件并倒序输出所有行

python 复制代码
# 使用 open() 将 sample.txt 的所有行倒序打印
with open("sample.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()   # 读取全部行

lines.reverse()             # 就地反转列表
for line in lines:
    # 行末自带换行符,end='' 防止 print 再加一次
    print(line, end='')

最后感谢阅读!欢迎关注我,微信公众号倔强青铜三。欢迎 点赞收藏关注,一键三连!

相关推荐
俊哥V3 小时前
每日 AI 研究简报 · 2026-05-21
人工智能·ai
biter down3 小时前
14:pytest-order 插件 顺序控制案例
开发语言·python·pytest
测试开发-学习笔记3 小时前
从0开始搭建自动化(一)-appium+python
python·自动化
2601_957884843 小时前
深度拆解:大模型RAG架构下,GEO优化的技术实现路径
人工智能·架构
这个DBA有点耶3 小时前
DBA的AI助手:向量检索与NL2SQL入门
数据库·人工智能·postgresql·学习方法·dba
㳺三才人子3 小时前
初探 Flask
后端·python·flask·html
YOLO数据集集合3 小时前
无人机航拍林业树种分割|单木树冠检测|三维点云|遥感影像数据集10059期
人工智能·yolo·目标检测·无人机
Pocker_Spades_A4 小时前
工业智能化的时序选型指南:当数据底座遇见机器学习
人工智能·机器学习
2601_955781984 小时前
飞书远程控机:OpenClaw配置全攻略
人工智能·开源·github·飞书·open claw安装·open claw部署
Inhand陈工4 小时前
游轮WiFi覆盖方案复盘:6台5G CPE + AP实现全船高速上网
人工智能·物联网·网络协议·网络安全·信息与通信·iot