目录

  • 1 Python语言基础
    • 1.1 本章导学
    • 1.2 Python概述
    • 1.3 人机交互
    • 1.4 对象与变量
    • 1.5 编码与命名规范
    • 1.6 注释
    • 1.7 实践指导
      • 1.7.1 Python解释器的安装
      • 1.7.2 Pycharm的安装与基本使用
    • 1.8 项目实训
      • 1.8.1 日期格式化输出
      • 1.8.2 欢迎入学
      • 1.8.3 整数四则运算
    • 1.9 作业
    • 1.10 编程训练
  • 2 数值类型与数值运算
    • 2.1 本章导学
    • 2.2 数值类型
    • 2.3 数值类型转换
    • 2.4 数值运算
    • 2.5 常用数学运算函数
    • 2.6 Math模块及其应用
    • 2.7 实践指导
      • 2.7.1 计算矩形面积
      • 2.7.2 一元二次方程求解
      • 2.7.3 换披萨
    • 2.8 作业
    • 2.9 编程训练
    • 2.10 项目实训
      • 2.10.1 计算弓形的面积
      • 2.10.2 地球数据计算
      • 2.10.3 学费计算
  • 3 流程控制
    • 3.1 本章导学
    • 3.2 流程控制
    • 3.3 常用运算
      • 3.3.1 真值测试
      • 3.3.2 比较运算
      • 3.3.3 成员运算
      • 3.3.4 布尔运算
      • 3.3.5 身份运算
    • 3.4 循环结构
      • 3.4.1 Range
      • 3.4.2 for 循环
        • 3.4.2.1 for循环(上)
        • 3.4.2.2 for循环实例
        • 3.4.2.3 for循环(下)
      • 3.4.3 while循环
    • 3.5 分支结构
    • 3.6 流程跳转
    • 3.7 else子句
    • 3.8 异常处理
    • 3.9 实践指导
      • 3.9.1 兔子繁殖问题
      • 3.9.2 九九乘法表
      • 3.9.3 百钱百鸡
      • 3.9.4 计算圆周率
      • 3.9.5 百分制转五分制
      • 3.9.6 输出与3无关的数
      • 3.9.7 自身以外的最大因数
      • 3.9.8 判断素数
      • 3.9.9 百钱百鸡进阶
      • 3.9.10 最小公倍数
      • 3.9.11 最大素数
      • 3.9.12 四则运算
      • 3.9.13 正整数A+B
    • 3.10 作业
    • 3.11 编程训练
    • 3.12 项目实训
      • 3.12.1 古代数学问题
      • 3.12.2 个人所得税计算器
      • 3.12.3 计算圆周率
  • 4 函数与模块化编程
    • 4.1 本章导学
    • 4.2 函数定义、调用与返回值
    • 4.3 参数传递
    • 4.4 变量作用域
    • 4.5 匿名函数
    • 4.6 递归函数
    • 4.7 实践指导
      • 4.7.1 阶乘函数定义
      • 4.7.2 素数判定函数
      • 4.7.3 幂函数的定义
      • 4.7.4 简单计算器
      • 4.7.5 回文素数
    • 4.8 作业
    • 4.9 编程训练
    • 4.10 项目实训
      • 4.10.1 来自计算机的问候
      • 4.10.2 自定义数学函数模块
      • 4.10.3 神奇的素数
  • 5 字符串
    • 5.1 本章导学
    • 5.2 序列通用操作
      • 5.2.1 字符串通用操作
      • 5.2.2 索引
      • 5.2.3 切片
      • 5.2.4 序列拼接与重复
      • 5.2.5 成员测试
    • 5.3 字符串创建与字符常量
    • 5.4 字符串与文件遍历
    • 5.5 常用字符串处理方法
    • 5.6 字符串格式化
    • 5.7 random模块及应用
    • 5.8 实践指导
      • 5.8.1 字符串索引百分制转五分制
      • 5.8.2 回文字符串判断
      • 5.8.3 输出身份信息
      • 5.8.4 约瑟夫环问题
      • 5.8.5 温度转换
      • 5.8.6 字符分类统计
      • 5.8.7 凯撒加密
      • 5.8.8 遍历输出文件
      • 5.8.9 隐私数据处理
      • 5.8.10 猜数游戏
      • 5.8.11 模拟验证码
      • 5.8.12 模拟产生微软序列号
    • 5.9 作业
    • 5.10 编程训练
    • 5.11 项目实训
      • 5.11.1 信息加密与解密
      • 5.11.2 文本分析
      • 5.11.3 日期分析处理
      • 5.11.4 单词猎手游戏
  • 6 序列类型
    • 6.1 本章导学
    • 6.2 元组
    • 6.3 列表
      • 6.3.1 列表的创建
      • 6.3.2 列表的更新
      • 6.3.3 列表元素的删除
      • 6.3.4 列表排序
      • 6.3.5 列表赋值与复制
      • 6.3.6 列表推导式
      • 6.3.7 列表常用内置函数
      • 6.3.8 列表嵌套及排序
    • 6.4 实践指导
      • 6.4.1 成绩统计分析
      • 6.4.2 二维列表的排序
      • 6.4.3 自幂数
      • 6.4.4 蒙特卡洛模拟圆周率
      • 6.4.5 文件中数据统计分析
      • 6.4.6 读取Excel文件中的证券数据
      • 6.4.7 读取csv文件中的数据
      • 6.4.8 读取SQLite数据库中的数据
    • 6.5 作业
    • 6.6 编程训练
    • 6.7 项目实训
      • 6.7.1 分配学号
      • 6.7.2 葡萄酒评论分析报告
      • 6.7.3 模拟生成身份信息并查验身份
  • 7 集合与映射类型
    • 7.1 本章导学
    • 7.2 集合类型
      • 7.2.1 集合创建
      • 7.2.2 集合操作
      • 7.2.3 集合运算
    • 7.3 映射类型
      • 7.3.1 字典的创建
      • 7.3.2 获取字典数据
      • 7.3.3 修改字典值
      • 7.3.4 字典排序
    • 7.4 实践指导
      • 7.4.1 奇特的四位数
      • 7.4.2 特殊的生日
      • 7.4.3 二进制IP转十进制
      • 7.4.4 手机销售分析
      • 7.4.5 通讯录的查询与更新
      • 7.4.6 查询首都
      • 7.4.7 词频统计
    • 7.5 作业
    • 7.6 编程训练
    • 7.7 项目实训
      • 7.7.1 大学排行榜分析
      • 7.7.2 简易英汉字典
      • 7.7.3 股票分析
  • 8 文件操作
    • 8.1 本章导学
    • 8.2 文件概述
    • 8.3 文件打开与关闭
    • 8.4 文件读写操作
    • 8.5 文件的应用
      • 8.5.1 CSV与JSON文件
      • 8.5.2 文件与文件夹操作
    • 8.6 NumPy文件操作
    • 8.7 实践指导
      • 8.7.1 读取文件
      • 8.7.2 读文件统计成绩
      • 8.7.3 pandas读文件统计成绩
      • 8.7.4 csv转json
      • 8.7.5 json转csv
      • 8.7.6 csv与json互转-pandas
      • 8.7.7 从多文件中提取数据汇总
      • 8.7.8 numpy读写文件
      • 8.7.9 numpy数据分析
      • 8.7.10 pandas数据分析
    • 8.8 作业
    • 8.9 编程训练
    • 8.10 项目实训
      • 8.10.1 ​词频统计
      • 8.10.2 批量文件处理与格式转换
  • 9 数据可视化
    • 9.1 本章导学
    • 9.2 基本线型图
    • 9.3 函数绘图
    • 9.4 数据绘图
      • 9.4.1 读两列数据绘图
      • 9.4.2 读多列数据绘图
      • 9.4.3 二列数据绘制多条曲线
    • 9.5 作业
    • 9.6 编程训练
    • 9.7 项目实训
      • 9.7.1 ​科学实验数据可视化
      • 9.7.2 金融数据可视化
      • 9.7.3 中英文词云
  • 10 实践与训练资源
    • 10.1 在线编程训练
    • 10.2 教师资源
本章导学


第8章 文件操作

【本章导读】

文件是指为了重复使用或长期使用的目的,以文本或二进制形式存放于外部存储器(硬盘、U盘、光盘等)中的数据保存形式,文件是信息交换的重要途径,也是利用程序解决实际问题的重要媒介。

程序对数据读取和处理都是在内存中进行的,程序设计结束或关闭后,内存中的这些数据也会随之消失。计算机文件可以将数据长期存储下来反复使用,不会因程序结束或断电而消失。

程序可以随时读取文件里的全部或部分数据,数据的处理结果写入文件后,可以长期保存,供其他程序的应用随时读取和处理。而且,文件的使用,还可以消除计算机内存对数据体积的限制,可以处理远超过内存大小的数据量。

本章将详细讲授利用程序创建、打开与关闭文件的方法,通过案例讲授文本文件、CSV格式文件和JSON格式文件的读写操作,以及利用numpypandas库读取文件中的数据并对数据分进分析与统计的方法。

【本章要点】

文件的打开与关闭

f = open(file, mode='r', encoding=None)
# 或
with open(file, mode='r', encoding=None) as f:


文件对象的遍历

f = open(file, mode='r', encoding=None)
for line in f:
    print(line)
# 或
with open(file, mode='r', encoding=None) as f:
    for line in f:
        print(line)


文件的读写操作

read(size)             无参数或参数为-1时,读取全部文件内容
readline(size)         无参数或参数为-1时,读取并返回文件对象中的一行数据
readlines(hint)        无参数时,读取文件全部数据,返回一个列表,列表中每个元素是文件对象中的一行数据
seek(offset,whence)    改变当前文件操作指针的位置
tell()                 返回文件指针当前的位置


●CSVJSON格式文件的读写与转换

利用numpy读取和分析文件中的数据

numpy.genfromtxt(fname, dtype=<class 'float'>, comments='#', 
                 delimiter=None, skip_header=0,skip_footer=0, 
                 missing_values=None, filling_values=None, 
                 usecols=None, autostrip=False, 
                 max_rows=None, encoding='bytes'…)
# 或
numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', 
              delimiter=None, converters=None,skiprows=0, 
              usecols=None, unpack=False, ndmin=0, 
              encoding='bytes',max_rows=None)


利用pandas读取和分析文件中的数据

read_csv()/to_csv()
read_json()/to_json()
read_excel()/to_excel()
read_html()/to_html()
read_pickle()/to_pickle()
read_sql()/to_sql()