pythonDay 11 学习任务:与外部世界交互 – 文件操作——读取文件内容

1. 三种读取文件的方法

Python 提供了三种主要的读取文件方法:

方法

作用

适用场景

read()

读取整个文件

文件较小的情况

readline()

读取一行

逐行处理大文件

readlines()

读取所有行到列表

需要按行处理的情况

2.read()- 一次性读取整个文件

基本用法:

file = open('example.txt', 'r', encoding='utf-8')
content = file.read()  # 读取所有内容
print(content)
file.close()

示例:读取自我介绍文件

# 读取我们之前创建的自我介绍文件
file = open('自我介绍.txt', 'r', encoding='utf-8')
全部内容 = file.read()
print(" 文件全部内容:")
print(全部内容)
file.close()

限制读取大小:

file = open('自我介绍.txt', 'r', encoding='utf-8')
前10个字符 = file.read(10)  # 只读取前10个字符
print(f"前10个字符:{前10个字符}")
file.close()

3.readline()- 逐行读取

逐行读取的三种方式:

方式1:手动逐行读取

file = open('自我介绍.txt', 'r', encoding='utf-8')

第一行 = file.readline()
第二行 = file.readline()
第三行 = file.readline()

print("第一行:" + 第一行)
print("第二行:" + 第二行) 
print("第三行:" + 第三行)

file.close()

方式2:循环读取所有行

file = open('自我介绍.txt', 'r', encoding='utf-8')

print(" 逐行显示内容:")
行号 = 1
while True:
    一行内容 = file.readline()
    if not 一行内容:  # 如果没有内容了,就退出
        break
    print(f"第{行号}行:{一行内容}", end='')  # end='' 由于readline()已经包含换行
    行号 += 1

file.close()

方式3:更简洁的循环写法

file = open('自我介绍.txt', 'r', encoding='utf-8')

行号 = 1
forin file:  # 直接遍历文件对象
    print(f"第{行号}行:{行}", end='')
    行号 += 1

file.close()

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

file = open('自我介绍.txt', 'r', encoding='utf-8')

所有行 = file.readlines()  # 返回字符串列表
print(" 所有行的列表:")
print(所有行)

print("
 逐行显示:")
for i, 行 in enumerate(所有行, 1):
    print(f"第{i}行:{行}", end='')

file.close()

5. 三种方法的对比示例

让我们创建一个示例文件来对比三种方法:

# 先创建一个示例文件
file = open('示例文件.txt', 'w', encoding='utf-8')
file.write('第一行:Python很有趣
')
file.write('第二行:文件操作很简单
') 
file.write('第三行:继续学习吧!
')
file.close()

print(" 三种读取方法对比:")

# 方法1read()
print("
1. 使用 read():")
file = open('示例文件.txt', 'r', encoding='utf-8')
print(file.read())
file.close()

# 方法2:readline() 循环
print("
2. 使用 readline() 循环:")
file = open('示例文件.txt', 'r', encoding='utf-8')
while True:
    行 = file.readline()
    if not 行:
        break
    print(行, end='')
file.close()

# 方法3:readlines()
print("
3. 使用 readlines():")
file = open('示例文件.txt', 'r', encoding='utf-8')
行列表 = file.readlines()
forin 行列表:
    print(行, end='')
file.close()

6. 处理大文件的技巧

当文件很大时,一次性读取可能耗尽内存。这时应该逐行处理:

def 处理大文件(文件名):
    """逐行处理大文件,节省内存"""
    print(f"开始处理大文件:{文件名}")
    
    行数 = 0
    file = open(文件名, 'r', encoding='utf-8')
    
    forin file:
        行数 += 1
        # 处理每一行(这里只是打印前50个字符)
        print(f"第{行数}行:{行[:50]}...")
        
        # 在实际应用中,这里可能是:
        # - 数据分析
        # - 日志处理  
        # - 数据清洗等
    
    file.close()
    print(f"处理完成!共{行数}行")

# 创建一个稍大的文件来测试
with open('大文件示例.txt', 'w', encoding='utf-8') as f:
    for i in range(100):  # 创建100行
        f.write(f"这是第{i+1}行内容,包含一些测试数据。" * 5 + "
")

处理大文件('大文件示例.txt')

7. 实用的文件读取函数

让我们创建一些实用的文件读取函数:

def 统计文件信息(文件名):
    """统计文件的行数、字数和字符数"""
    try:
        with open(文件名, 'r', encoding='utf-8') as file:
            内容 = file.read()
            
        行数 = 内容.count('
') + 1  # 换行符数量+1
        字数 = len(内容.split())     # 按空格分割的单词数
        字符数 = len(内容)           # 总字符数
        
        print(f" 文件 '{文件名}' 统计信息:")
        print(f"  行数:{行数}")
        print(f"  字数:{字数}") 
        print(f"  字符数:{字符数}")
        
    except FileNotFoundError:
        print(f"❌ 文件 '{文件名}' 不存在!")

def 搜索文件内容(文件名, 关键词):
    """在文件中搜索包含关键词的行"""
    try:
        with open(文件名, 'r', encoding='utf-8') as file:
            行号 = 0
            找到 = False
            
            forin file:
                行号 += 1
                if 关键词 in 行:
                    print(f"第{行号}行:{行}", end='')
                    找到 = True
            
            if not 找到:
                print(f"没有找到包含 '{关键词}' 的行")
                
    except FileNotFoundError:
        print(f"❌ 文件 '{文件名}' 不存在!")

# 使用示例
统计文件信息('自我介绍.txt')
print("
")
搜索文件内容('自我介绍.txt', '爱好')

8. 常见问题与技巧

问题1:文件末尾的空行

file = open('example.txt', 'r', encoding='utf-8')
for 行 in file:
    处理后的行 = 行.strip()  # 去除首尾空白字符(包括换行符)
    if 处理后的行:  # 只处理非空行
        print(处理后的行)
file.close()

问题2:处理不同操作系统创建的文本文件

# 统一处理换行符
file = open('example.txt', 'r', encoding='utf-8')
内容 = file.read()
统一内容 = 内容.replace('
', '
').replace('
', '
')  # 统一为

file.close()

9. 综合练习

创建一个程序,实现以下功能:

  1. 读取一个文本文件
  2. 显示文件总行数
  3. 显示最长的行
  4. 统计特定词汇出现的次数
def 分析文本文件(文件名):
    """综合文件分析函数"""
    try:
        with open(文件名, 'r', encoding='utf-8') as file:
            所有行 = file.readlines()
        
        if not 所有行:
            print("文件为空!")
            return
        
        # 基本信息
        总行数 = len(所有行)
        最长行 = max(所有行, key=len)
        总字符数 = sum(len(行) forin 所有行)
        
        print(f" 文件分析结果:")
        print(f"  总行数:{总行数}")
        print(f"  总字符数:{总字符数}")
        print(f"  最长行({len(最长行)}字符):{最长行.strip()}")
        
        # 词汇统计(简单版本)
        所有内容 = ''.join(所有行)
        词汇列表 = 所有内容.split()
        print(f"  总词汇数:{len(词汇列表)}")
        
        # 显示前5行
        print(f"
 前5行预览:")
        for i, 行 in enumerate(所有行[:5], 1):
            print(f"  {i}: {行}", end='')
            
    except FileNotFoundError:
        print(f"❌ 文件 '{文件名}' 不存在!")

# 测试
分析文本文件('自我介绍.txt')

重点总结

  1. 三种读取方法
  2. read():整个文件
  3. readline():逐行读取
  4. readlines():所有行到列表
  5. 大文件处理:使用循环逐行读取,避免内存不足
  6. 编码重大:始终指定 encoding='utf-8'
  7. 资源管理:读取完记得关闭文件

小练习

创建一个程序:

  1. 读取”自我介绍.txt”文件
  2. 使用三种不同方法分别读取并显示内容
  3. 统计文件中”Python”这个词出现的次数
  4. 找出文件中最长的一行
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 共1条

请登录后发表评论