查看全课大纲(第 8 / 101 节)
  1. 1.数据分析基本概念
  2. 2.学习数据分析的一般路线
  3. 3.数据分析的流程
  4. 4.数据类型
  5. 5.环境部署(1)
  6. 6.环境部署(2)
  7. 7.课程介绍
  8. 8.TXT文件操作
  9. 9.JSON文件操作
  10. 10.CSV文件操作
  11. 11.Excel文件操作
  12. 12.数据库及SQL常用语法
  13. 13.数据库基本操作
  14. 14.数据库多表连接
  15. 15.实战:欧洲职业足球数据库分析
  16. 16.爬虫简介
  17. 17.URL管理模块
  18. 18.网页下载模块
  19. 19.网页解析模块(1)
  20. 20.网页解析模块(2)
  21. 21.Scrapy简介
  22. 22.Scrapy使用步骤(1)
  23. 23.Scrapy使用步骤(2)
  24. 24.Scrapy使用步骤(3)
  25. 25.Scrapy使用步骤(4)
  26. 26.实战:获取国内城市空气质量指数数据
  27. 27.NumPy和SciPy介绍
  28. 28.多维数组
  29. 29.多维数组操作
  30. 30.NumPy的常用方法
  31. 31.向量化介绍
  32. 32.向量化及通用函数
  33. 33.实战:2016美国大选分析
  34. 34.数据结构-Series
  35. 35.数据结构-DataFrame
  36. 36.数据结构-Index
  37. 37.Series的索引操作
  38. 38.DataFrame的索引操作
  39. 39.索引操作总结
  40. 40.运算与对齐
  41. 41.函数应用操作(1) -- map
  42. 42.函数应用操作 (2) -- apply applymap
  43. 43.文件读写操作
  44. 44.排序操作
  45. 45.数据清洗--处理缺失数据
  46. 46.数据清洗--处理重复数据
  47. 47.数据清洗--替换数据
  48. 48.常用统计方法(1) -- describe quantile
  49. 49.常用统计方法(2) -- sum mean median count
  50. 50.常用统计方法(3) -- max min idxmax idxmin
  51. 51.常用统计方法(4) -- mad var std cumsum
  52. 52.实战:全球食品数据分析
  53. 53.层级索引
  54. 54.分组与聚合介绍
  55. 55.分组操作(1) -- GroupBy对象及常用聚合操作
  56. 56.分组操作(2) -- 自定义分组及聚合操作
  57. 57.透视表介绍
  58. 58.透视表操作
  59. 59.数据规整(1) -- 数据合并concat
  60. 60.数据规整(2) -- 数据连接merge
  61. 61.数据重构(3) -- 数据重构stack unstack
  62. 62.实战:互联网电影资料库分析
  63. 63.探索性数据分析EDA介绍
  64. 64.EDA的目的
  65. 65.EDA常用工具
  66. 66.Matplotlib绘图基本介绍
  67. 67.Matplotlib画布
  68. 68.散点图和柱状图的绘制
  69. 69.直方图的绘制
  70. 70.矩阵绘图
  71. 71.子图的使用
  72. 72.Matplotlib颜色、标记、线型
  73. 73.Matplotlib坐标刻度、标签、图例、标题
  74. 74.Seaborn介绍
  75. 75.数据集分布可视化(1) -- 单变量分布、双变量分布
  76. 76.数据集分布可视化(2) -- 变量关系可视化
  77. 77.类别数据可视化 -- 类别散布图、类别内数据分布、类别内统计图
  78. 78.交互式数据可视化工具Bokeh介绍
  79. 79.Bokeh绘制散点图、柱状图、盒子图、弦图
  80. 80.Bokeh绘制常用图形元素
  81. 81.3D绘图 -- mplot3d
  82. 82.3D曲线可视化
  83. 83.3D散点图可视化
  84. 84.3D柱状图可视化
  85. 85.Pandas绘图
  86. 86.实战:Lending Club借贷数据探索性分析及可视化
  87. 87.机器学习介绍及应用场景
  88. 88.机器学习建模介绍 (1) -- 分类
  89. 89.机器学习建模介绍 (2) -- 回归
  90. 90.机器学习建模介绍 (3) -- 聚类
  91. 91.机器学习分类
  92. 92.机器学习工具scikit-learn
  93. 93.使用scikit-learn的流程
  94. 94.数据集准备及划分
  95. 95.模型选择
  96. 96.数据预处理及特征工程
  97. 97.过拟合与欠拟合
  98. 98.模型调参介绍
  99. 99.模型调参方法
  100. 100.模型测试及评价
  101. 101.实战:通过移动设备行为数据预测性别和年龄

TXT文件操作

约 15 分钟

📺 正在播放小象学院官方高清录播(支持倍速与清晰度调节)

小象实战讲义 · Python数据分析实战

在数据分析工作中,我们接触到的数据源多种多样,其中文本文件(TXT)是最基础、最常见的一种。无论是日志文件、配置文件,还是简单的数据记录,TXT文件都扮演着重要角色。本节我们将学习如何使用Python对TXT文件进行读取和写入操作,这是后续所有数据处理和分析的起点。

💡 核心导读

  • 理解TXT文件结构:认识由字符串行组成、以换行符分隔的文本文件本质。
  • 掌握文件操作流程:学习打开、读取/写入、关闭文件的标准化步骤。
  • 熟悉读写方法:掌握read()、readline()、readlines()以及write()、writelines()等核心方法。
  • 使用with语句:学会使用更安全、更简洁的资源管理方式。

TXT文件基础

TXT文件(纯文本文件)是由字符串行组成的文件格式。每一行文本的末尾都有一个特殊的换行符(End Of Line,EOL),在大多数操作系统中用\n表示(反斜杠加字母n)。这个字符在普通文本编辑器中通常不可见,但它决定了文本的换行显示。

在Python中,文件被视为一种资源。使用文件的标准流程是:打开文件 → 进行读写操作 → 关闭文件。及时关闭文件是一个好习惯,可以释放系统资源,避免内存泄漏。

文件读写基础操作

Python使用内置的open()函数来打开文件,该函数返回一个文件对象,通过这个对象我们可以进行后续的读写操作。

# 演示文件操作的基本语法和流程
# 语法:open(filename, mode, encoding)
# filename: 文件路径
# mode: 打开模式,如 'r' 表示读取,'w' 表示写入
# encoding: 文件编码,处理中文常用 'utf-8'

# 注意:在实际数据分析中,我们通常从真实文件中读取数据
# 但为了演示的完整性和可复现性,这里我们先在内存中创建示例内容
# 然后演示完整的读写流程

# 首先,我们创建一个示例的文本内容(模拟从文件中读取的数据)
sample_content = """Python是一种高级编程语言。
它由Guido van Rossum于1991年创建。
Python的设计哲学强调代码的可读性。
它支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。
"""

print("示例文本内容:")
print(sample_content)
print("="*50)

# 标准文件操作流程示例(注释说明,不实际执行文件IO)
print("文件操作标准流程:")
print("1. 打开文件: file_obj = open('data.txt', 'r', encoding='utf-8')")
print("2. 读取内容: content = file_obj.read() 或使用其他读取方法")
print("3. 处理数据: 对content进行数据分析操作")
print("4. 关闭文件: file_obj.close()")
print("="*50)

# 演示不同读取方法的概念
print("不同读取方法:")
print("- read(): 读取整个文件内容,返回一个字符串")
print("- readline(): 读取一行内容,返回字符串")
print("- readlines(): 读取所有行,返回字符串列表")
示例文本内容:
Python是一种高级编程语言。
它由Guido van Rossum于1991年创建。
Python的设计哲学强调代码的可读性。
它支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。

==================================================
文件操作标准流程:
1. 打开文件: file_obj = open('data.txt', 'r', encoding='utf-8')
2. 读取内容: content = file_obj.read() 或使用其他读取方法
3. 处理数据: 对content进行数据分析操作
4. 关闭文件: file_obj.close()
==================================================
不同读取方法:
- read(): 读取整个文件内容,返回一个字符串
- readline(): 读取一行内容,返回字符串
- readlines(): 读取所有行,返回字符串列表

读取操作详解

现在让我们通过具体的代码示例来理解不同的读取方法。我们将使用字符串模拟文件内容,展示各种读取方法的效果。

# 模拟文件读取操作
# 在实际应用中,这些内容通常来自真实的TXT文件

# 模拟的文件内容(多行文本)
file_content = "第一行:Python数据分析入门\n第二行:学习文件操作是第一步\n第三行:掌握基础才能深入\n"

print("模拟的原始文件内容(显示换行符位置):")
# 显示原始字符串,可以看到\n字符
print(repr(file_content))
print("\n" + "="*50 + "\n")

# 模拟使用read()方法 - 读取全部内容
print("1. 使用read()方法读取全部内容:")
# 在实际文件中:content = file_obj.read()
content = file_content  # 这里直接使用字符串模拟读取结果
print(content)
print("读取结果类型:", type(content).__name__)
print("\n" + "="*50 + "\n")

# 模拟使用readline()方法 - 逐行读取
print("2. 使用readline()方法逐行读取:")
# 为了模拟逐行读取,我们将字符串按换行符分割
lines = file_content.split('\n')
# 模拟第一次调用readline()
line1 = lines[0] + '\n'  # 注意:readline()会保留换行符
print("第一次readline():", repr(line1))
# 模拟第二次调用readline()
line2 = lines[1] + '\n'
print("第二次readline():", repr(line2))
print("\n" + "="*50 + "\n")

# 模拟使用readlines()方法 - 读取所有行到列表
print("3. 使用readlines()方法读取所有行:")
# 在实际文件中:all_lines = file_obj.readlines()
# readlines()返回列表,每个元素是一行(包含换行符)
all_lines = [line + '\n' for line in file_content.split('\n') if line]
print("读取的行列表:", all_lines)
print("列表长度:", len(all_lines))
print("\n逐行输出内容(使用print,换行符生效):")
for i, line in enumerate(all_lines):
    print(f"第{i+1}行: {line}", end="")  # line本身已有换行符,所以end=""
模拟的原始文件内容(显示换行符位置):
'第一行:Python数据分析入门\n第二行:学习文件操作是第一步\n第三行:掌握基础才能深入\n'

==================================================

1. 使用read()方法读取全部内容:
第一行:Python数据分析入门
第二行:学习文件操作是第一步
第三行:掌握基础才能深入

读取结果类型: str

==================================================

2. 使用readline()方法逐行读取:
第一次readline(): '第一行:Python数据分析入门\n'
第二次readline(): '第二行:学习文件操作是第一步\n'

==================================================

3. 使用readlines()方法读取所有行:
读取的行列表: ['第一行:Python数据分析入门\n', '第二行:学习文件操作是第一步\n', '第三行:掌握基础才能深入\n']
列表长度: 3

逐行输出内容(使用print,换行符生效):
第1行: 第一行:Python数据分析入门
第2行: 第二行:学习文件操作是第一步
第3行: 第三行:掌握基础才能深入

写入操作与with语句

写入文件使用'w'模式打开文件,然后使用write()或writelines()方法。write()写入单个字符串,writelines()将字符串列表原样逐个写入——注意它不会自动添加换行符,需要每个元素独占一行时,必须在元素内容末尾自带\n(如本节示例所示)。

在实际数据分析工作中,我们经常需要将处理结果保存到文件中。为了确保资源被正确释放,推荐使用with语句,它会自动管理文件的打开和关闭,即使发生异常也能保证文件被正确关闭。

# 演示写入操作和with语句的使用

print("写入操作演示:")
print("="*50)

# 1. 使用write()写入单个字符串
# 注意:这里不实际创建文件,只演示概念和流程
content_to_write = "《Python数据分析实战》课程笔记\n"
print(f"准备写入的内容:{repr(content_to_write)}")
print("写入流程:打开文件(w模式) → write(内容) → 关闭文件")
print("\n" + "="*50 + "\n")

# 2. 使用writelines()写入字符串列表
print("使用writelines()写入多行内容:")
# 创建一个字符串列表,每个元素将作为一行写入
lines_to_write = [f"这是第{i}行数据分析记录\n" for i in range(5)]
print("准备写入的字符串列表:")
for i, line in enumerate(lines_to_write):
    print(f"  行{i}: {repr(line)}", end="")
print("\n写入流程:每个列表元素成为文件的一行")
print("\n" + "="*50 + "\n")

# 3. with语句演示 - 推荐的文件操作方式
print("with语句文件操作(推荐):")
print("语法:with open(文件名, 模式, 编码) as 文件对象:")
print("      在缩进块内进行文件操作")
print("优势:自动关闭文件,即使发生异常也能保证资源释放")
print("\n示例流程:")
print("with open('result.txt', 'w', encoding='utf-8') as f:")
print("    f.write('分析结果:\\n')")
print("    for i in range(3):")
print("        f.write(f'  结果{i}: 值{i*10}\\n')")
print("# 退出with块后,文件自动关闭")

# 模拟with块内的操作(不实际写文件)
print("\n模拟with块内操作结果:")
analysis_results = "分析结果:\n"
for i in range(3):
    analysis_results += f"  结果{i}: 值{i*10}\n"
print(analysis_results)
print("(模拟)文件已自动关闭")
写入操作演示:
==================================================
准备写入的内容:'《Python数据分析实战》课程笔记\n'
写入流程:打开文件(w模式) → write(内容) → 关闭文件

==================================================

使用writelines()写入多行内容:
准备写入的字符串列表:
  行0: '这是第0行数据分析记录\n'  行1: '这是第1行数据分析记录\n'  行2: '这是第2行数据分析记录\n'  行3: '这是第3行数据分析记录\n'  行4: '这是第4行数据分析记录\n'
写入流程:每个列表元素成为文件的一行

==================================================

with语句文件操作(推荐):
语法:with open(文件名, 模式, 编码) as 文件对象:
      在缩进块内进行文件操作
优势:自动关闭文件,即使发生异常也能保证资源释放

示例流程:
with open('result.txt', 'w', encoding='utf-8') as f:
    f.write('分析结果:\n')
    for i in range(3):
        f.write(f'  结果{i}: 值{i*10}\n')
# 退出with块后,文件自动关闭

模拟with块内操作结果:
分析结果:
  结果0: 值0
  结果1: 值10
  结果2: 值20

(模拟)文件已自动关闭

📝 动手练一练

  1. 换行符的作用:在写入文件时,如果不手动添加\n换行符,使用writelines()方法写入字符串列表会得到什么结果?请描述你预期的文件内容格式。
👉 点击查看参考答案

如果不添加\n换行符,使用writelines()写入的字符串列表会将所有字符串连接在一起写入文件,中间没有换行。例如,列表['第一行', '第二行', '第三行']写入后,文件内容将是第一行第二行第三行,所有内容都在同一行。换行符\n的作用就是告诉文本编辑器(和Python的print函数)在此处换行显示。

  1. 数据分析小任务:假设你读取了一个包含多行文本的TXT文件,内容为 Python:10\nData:20\nAnalysis:15\nPython:5\n(其中 \n 是换行符),请编写代码思路统计每个关键词出现的次数(提示:按行读取,分割冒号,累加数值)。
👉 点击查看参考答案
# 代码思路示例
# 1. 使用with语句打开文件(假设文件名为data.txt)
# 2. 初始化一个空字典来存储统计结果,如 word_count = {}
# 3. 逐行读取文件内容
# 4. 对每一行,使用split(':')分割关键词和数值
# 5. 将关键词作为字典键,将数值(转换为整数)累加到对应的键值中
# 6. 输出统计结果

# 模拟实现(不实际读取文件):
content = "Python:10\nData:20\nAnalysis:15\nPython:5\n"
word_count = {}

lines = content.strip().split('\n')
for line in lines:
    if ':' in line:
        word, value = line.split(':')
        word = word.strip()
        value = int(value.strip())
        word_count[word] = word_count.get(word, 0) + value

print("关键词统计结果:")
for word, total in word_count.items():
    print(f"{word}: {total}")

# 输出:
# Python: 15
# Data: 20
# Analysis: 15
关键词统计结果:
Python: 15
Data: 20
Analysis: 15

本章小结

本节我们学习了Python中TXT文件操作的基础知识,这是数据分析工作中数据采集的第一步。掌握文件操作不仅限于TXT文件,其核心思想(打开→操作→关闭)同样适用于其他格式的文件操作。

📋 行动清单

  • 练习使用read()、readline()和readlines()方法读取文本内容,理解它们的区别
  • 尝试使用with语句进行文件读写操作,养成资源管理的好习惯
  • 创建一个简单的文本文件,编写代码统计文件中特定关键词的出现频率

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 本节课件:TXT文件操作
    PDF · 285KB
    下载
  • 全套课件打包(第1-5章)
    ZIP · 12.8MB
    下载
  • 全套课件打包(第6-8章)
    ZIP · 15MB
    下载
  • 实战数据集:AppleStore 应用商城分析
    ZIP · 329KB
    下载
  • 实战数据集:女性服装电商分析
    ZIP · 2.8MB
    下载
  • Python 数据分析环境搭建指南
    PDF · 2MB
    下载
  • Scrapy 安装教程
    PDF · 12.7MB
    下载
  • 附加实战项目:AppleStore 应用商城数据分析
    ZIP · 0.3MB · ipynb + CSV 数据
    下载
  • 附加实战项目:银行电话营销数据分析
    ZIP · 0.4MB · ipynb + CSV 数据
    下载
  • 附加实战项目:女性服装电商评论数据分析
    ZIP · 2.7MB · ipynb + CSV 数据
    下载
  • 附加实战项目:美国化学学会杂志数据分析
    ZIP · 34.2MB · ipynb + SQLite 数据库
    下载