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
for 行 in 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(" 三种读取方法对比:")
# 方法1:read()
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()
for 行 in 行列表:
print(行, end='')
file.close()
6. 处理大文件的技巧
当文件很大时,一次性读取可能耗尽内存。这时应该逐行处理:
def 处理大文件(文件名):
"""逐行处理大文件,节省内存"""
print(f"开始处理大文件:{文件名}")
行数 = 0
file = open(文件名, 'r', encoding='utf-8')
for 行 in 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
for 行 in 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. 综合练习
创建一个程序,实现以下功能:
- 读取一个文本文件
- 显示文件总行数
- 显示最长的行
- 统计特定词汇出现的次数
def 分析文本文件(文件名):
"""综合文件分析函数"""
try:
with open(文件名, 'r', encoding='utf-8') as file:
所有行 = file.readlines()
if not 所有行:
print("文件为空!")
return
# 基本信息
总行数 = len(所有行)
最长行 = max(所有行, key=len)
总字符数 = sum(len(行) for 行 in 所有行)
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')
重点总结
- 三种读取方法:
- read():整个文件
- readline():逐行读取
- readlines():所有行到列表
- 大文件处理:使用循环逐行读取,避免内存不足
- 编码重大:始终指定 encoding='utf-8'
- 资源管理:读取完记得关闭文件
小练习
创建一个程序:
- 读取”自我介绍.txt”文件
- 使用三种不同方法分别读取并显示内容
- 统计文件中”Python”这个词出现的次数
- 找出文件中最长的一行
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END
















- 最新
- 最热
只看作者