第七章:文件和数据格式化
前文
在实际应用中我们经常经历把要处理的数据读入python程序中进行处理并输出的这一过程。
因此本章节主要解决的就是如何进行这一过程,以及在此过程中相关的一系列问题。
在文章最后还会介绍一个PIL库,以用来进行图像存储、显示和处理。
以下是本章主要讲的内容:
1.文件的使用
对文本文件和二进制文件如何进行读入、处理以及写入。
2.维度维数据格式化和处理
对一维、二维、多维数据如何进行存储、表示以及处理。
3.PIL库的使用
目录
A、文件的使用
1.文件概述
2.文件的打开
3.文件的关闭
4.文件的读取
B、维度维数据格式化和处理
1.一维数据
a. 一维存储
b. 一维表示
c. 一维处理
1.二维数据
a. 一维存储a. 一维存储
b.CSV格式与二维数据存储
c. 二维处理
3.高维数据的格式化
a.Json库
b.CSV和JSON格式相互转换
C、PIL库的使用
正文
A、文件的使用
1.文件概述
文件 是数据的集合和抽象(类似:函数是程序的集合和抽象)。
文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容。
文件是数据存储的一种形式。
文件的展现形态:
文本文件
二进制文件
本质上, 所有文件都是二进制形式存储
二进制文件和文本文件只是文件的展示方式,二者 最主要区别 在于是否有统一的字符编码。
文本文件 一般由单一特定编码的字符组成,如UTF-8编码。-- 长字符串例如:.txt文件、.py文件
二进制文件 直接由比特0和比特1组成,没有统一字符编码,文件内部数据的组织格式与文件用途有关。-- 字节流例如:.png文件、.avi文件
无论文件创建为文本文件或者二进制文件,都可以用“ 文本文件方式 ”和“ 二进制文件方式 ”打开,打开后的操作不同。
实例 :理解文本文件和二进制文件的区别
第一种
字符串: “中国是个伟大的国家!”
第二种
# 文本形式打开文件
textFile = open("7.1.txt","rt")
print(textFile.readline())
textFile.close()
文本形式: “中国是个伟大的国家!”
Python通过解释器内置的 open()函数 打开一个文件,并实现该文件与一个程序变量的关联:
<变量名> = open(<文件名>, <打开模式>)
文件名:文件路径和名称,如果源文件同目录可省略路径。
打开模式:7种。文本or二进制;读or写
变量名:文件句柄
文件名:文件路径和名称。
例如:D:\PYE\7.1.txt
绝对路径:D: / PYE / 7.1.txt
或者 D: \\ PYE \\ 7.1.txt
相对路径: .\PYE\7.1.txt
或者 7.1.txt
open()函数提供 7种基本的打开模式 :
B、维度维数据格式化和处理
一维数据 :由对等关系的有序或无序数据构成,采用线性方式组织。对应于python中的列表、数组和集合等概念。
二维数据 :也称表格数据,由多个一维数据构成,是一维数据的组合形式。由关联关系数据构成,采用表格方式组织,对应于数学中的矩阵,常见的表格都属于二维数据。
高维数据 :由一维或二维数据在新维度上扩展而成。例如:排行榜在时间维度的扩展。
1.一维数据
a.一维存储
一维数据是最简单的数据组织类型,有多种存储格式,常用特殊字符分隔:
1.用空格分隔
2.用逗号分隔
3.用其他符号或符号组合分隔
注意:
如果某个元素缺失,逗号仍要保留
二维数据的表头可以作为数据存储,也可以另行存储
逗号为英文半角逗号,逗号与数据之间无额外空格
如果数据本身有逗号,不同csv软件有约定
基本规则:
(1)纯文本格式,通过单一编码表示字符;
(2)以行为单位,开头不留空行,行之间没有空行;
(3)每行表示一个一维数据,多行表示二维数据;
(4)以逗号分隔每列数据,列数据为空也要保留逗号;
(5)可以包含或不包含列名,包含时列名放置在文件第一行。
CSV文件的每一行是一维数据,可以使用Python中的列表类型表示,整个CSV文件是一个二维数据,由表示每一行的列表类型作为元素,组成一个二维列表。
从CSV格式的文件中读入数据
3.高维数据的格式化
与一维二维数据不同,高维数据能展示数据间更为复杂的组织关系。为了保持灵活性,表示高维数据不采用任何结构形式,仅采用最基本的二元关系,即键值对。万维网是高维数据最成功的典型应用。
JSON格式可以对高维数据进行表达和存储。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和理解。JSON格式表达键值对<key, value>的基本格式如下,键值对都保存在双引号中:
"key" : "value"
当多个键值对放在一起时,JSON有如下一些约定:
数据保存在键值对中;
键值对之间由逗号分隔;
括号用于保存键值对数据组成的对象;
方括号用于保存键值对数据组成的数组。
a.Json库
引入Json模块:import json
json库主要包括两类函数:操作类函数和解析类函数
操作类函数主要完成外部JSON格式和程序内部数据类型之间的转换功能
解析类函数主要用于解析键值对内容。
dumps()和loads()分别对应编码和解码功能。