苦练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='')

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

相关推荐
yaoxin5211232 分钟前
273. Java Stream API - Stream 中的中间操作:Mapping 操作详解
java·开发语言·python
java1234_小锋2 分钟前
[免费]基于Python的Flask+Vue物业管理系统【论文+源码+SQL脚本】
后端·python·flask·物业管理
free-elcmacom2 分钟前
机器学习高阶教程<5>当机器学习遇上运筹学:破解商业决策的“终极难题”
人工智能·python·机器学习
技术小甜甜3 分钟前
[Python实战] 告别浏览器驱动烦恼:用 Playwright 优雅实现网页自动化
开发语言·python·自动化
Lun3866buzha12 分钟前
大型铸件表面缺陷检测与分类_YOLO11-C2BRA应用实践
人工智能·分类·数据挖掘
递归尽头是星辰14 分钟前
AI 驱动的报表系统:从传统到智能的落地与演进
大数据·人工智能·大模型应用·spring ai·ai 报表·报表智能化
Wang ruoxi16 分钟前
基于最小二乘法的离散数据拟合
人工智能·算法·机器学习
阿杰学AI21 分钟前
AI核心知识56——大语言模型之ToT(简洁且通俗易懂版)
人工智能·ai·语言模型·提示工程·tot·pe·思维树
Baihai_IDP21 分钟前
你说的 CUDA 到底是哪个 CUDA?一文理清那些让人混淆的术语和版本号
人工智能·面试·llm
xiaoxue..28 分钟前
二叉树深度解析:从基础结构到实战应用
javascript·数据结构·面试