outline
- 7.1 文件的使用
- 7.2 实例11:自动轨迹绘制
- 7.3 一维数据的格式化和处理
- 7.4 二维数据的格式化和处理
- 7.5 模块6:wordcloud库的使用
- 7.6 实例12:政府工作报告词云
- 方法论:从py角度理解的文件和数据表示
- 实践能力:学会编写带有文件输入输出的程序
7.1 文件的使用
1.文件的类型
文件 是数据的抽象和集合
- 文件是存储在辅助存储器上的数据序列;
- 文件是数据存储的一种形式;
- 文件展现形态:文本文件 和 二进制文件。
文本文件 vs. 二进制文件
- 文本文件 和 二进制文件 只是文件的展示方式;
- 本质上,所有文件都是二进制形式存储;
- 形式上,所有文件采用两种方式展示。
文本文件
文件是数据的抽象和集合
- 由 单一特定编码 组成的文件,如 utf-8编码;
- 由于存在编码,也被看成是存储着的长字符串;
- 适用于例如:.txt文件、.py文件。
二进制文件
文件是数据的抽象和集合
- 直接由 比特0和1组成,没有统一字符编码;
- 一般存在二进制0和1的组织结构,即文件格式;
- 适用于例如:.png文件、.avi文件等。
?文本格式可以更好的理解信息,而二进制形式是最原始的存储格式。
# 1.文本形式打开文件
tf = open("f.txt", "rt", encoding="utf-8")
print(tf.readline())
tf.close()
# "中国是个伟大的国家!"
# 2.二进制形式打开文件
bf = open("f.txt", "rb")
print(bf.readline())
bf.close()
# b'"\xe4\xb8\xad\xe5\x9b\xbd\xe6\x98\xaf\xe4\xb8\xaa\xe4\xbc\x9f\xe5\xa4\xa7\xe7\x9a\x84\xe5\x9b\xbd\xe5\xae\xb6\xef\xbc\x81"'
2. 文件的打开和关闭
?
文件的打开?
?
?路径:绝对路径和相对路径
文件打开模式
文件的打开模式 | 描述 |
---|
'r' | 只读模式,默认值,如果文件不存在,返回 FileNotFoundError | 'w' | 覆盖写模式,文件不存在则创建,存在则完全覆盖 | 'x' | 创建写模式,文件不存在则创建,存在则返回FileExistsError | 'a' | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 | 'b' | 二进制文件模式 | 't' | 文本文件模式,默认值 | '+' | 与 r/w/x/a 一同使用,在原功能基础上增加同时读写功能 |
f = open("f.txt") # 文本形式、只读模式、默认值
f = open("f.txt", "rt") # 文本形式、只读模式、同默认值
f = oepn("f.txt", "w") # 文本形式、覆盖写模式
f = oepn("f.txt", "a+") # 文本形式、追加写模式+读文件
f = oepn("f.txt", "x") # 文本形式、创建写形式
f = oepn("f.txt", "b") # 二进制形式、只读模式
f = oepn("f.txt", "wb") # 二进制形式、覆盖写模式
文件的关闭
最好写上,但是忘记写的话,在程序退出之后,py会默认关闭文件?
3. 文件内容的读取
操作方法 | 描述 |
---|
<f>.read(size=-1) | 读入全部内容,如果给出参数,读入前size长度 >>>s = f.read(2) 中国 | <f>.readline(size=-1) | 读入一行内容,如果给出参数,读入前size长度 >>>s = f.readline() 中国是一个伟大的国家! | <f>.readlines(hint=-1) | 读入文件所有行,以每行为元素形成列表 如果给出参数,读入前 hint 行 >>>s = f.readlines() ['中国是一个伟大的国家'] |
文件的全文本操作
遍历全文本:方法一
fname = input("请输入要打开的文件名称:")
fo = open(fname, "r")
txt = fo.read()
# deal
fo.close()
?遍历全文本:方法二(按数量读入,逐步处理)
fname = input("请输入要打开的文件名称:")
fo = open(fname, "r")
txt = fo.read(2)
while txt != "":
# deal
txt = fo.read(2)
fo.close()
文件的逐行操作
逐行遍历文件:方法一(一次读入,分行处理)
fname = input("请输入要打开的文件名称:")
fo = open(fname, "r")
for line in fo.readlines():
print(line)
fo.close()
逐行遍历文件:方法二(分行读入,逐行处理)
fname = input("请输入要打开的文件名称:")
fo = open(fname, "r")
for line in fo:
print(line)
fo.close
4. 数据的文件写入
操作方法 | 描述 |
---|
<f>.write(s) | 向文件写入一个字符串 或 字节流 >>>f.write("中国是一个伟大的国家!") | <f>.writelines(lines) | 将一个元素全为字符串的列表写入文件 >>>ls = ["中国", "法国", "美国"] >>>f.writelines(ls) 中国法国美国(直接拼接) | <f>.seek(offset) | 改变当前文件操作指针的位置 offset含义:0-文件开头;1-当前位置;2-文件结尾 >>>f.seek(0) |
单元小结:
- 文件的使用方式:打开-操作-关闭;
- 文本文件 & 二进制文件,open(,) 和 close()
- 文件内容的读取:.read(),.readline(),.readlines()
- 数据的文件写入:.write(),.writelines(),.seek()
7.2 实例11:自动轨迹绘制
7.3 一维数据的格式化和处理
1.数据组织的维度
从一个数据 到 一组数据
维度:数据的组织方式
一维数据
由对等关系的有序 或 无序数据构成,采用线性方式组织
3.1413, 3.1398, 3.1404, 3.1401, 3.1349, 3.1376
对应列表、数组和集合等概念
二维数据
由多个一维数据构成,是一维数据的组合形式
例如表格是典型的二维数据,其中,表头是二维数据的一部分。
多维数据
由一维 或 二维数据在新维度上扩展形成
例如:中国大学排行榜这个表格在不同的时间维度
高维数据
仅利用最基本的二元关系展示数据间的复杂结构
键值对
{
"firstName" : "Tian",
"lastName" : "Song",
"address" : {
"streetAddr" : "中关村南大街5号",
"city" : "北京市",
"zipcode" : "100081"
},
"professional" : ["Computer Networking", "Security"]
}
数据的操作周期
2. 一维数据的表示
数据间有序:列表
ls = [3.1398, 3.1349, 3.1376]
列表 类型可以表达一维有序数据;
for循环 可以遍历数据,进而对每个数据进行处理。
数据间无序:集合
st = {3.1398, 3.1349, 3.1376}
集合类型可以表达一维无序数据;
for循环可以遍历数据,进而对每个数据进行处理。
一维数据的存储
存储方式一:空格分隔
中国 美国 日本 德国 法国 英国 意大利
- 使用一个或多个空格分隔进行存储,不换行;
- 缺点:数据中不能存在空格
存储方式二:逗号分隔
中国,美国,日本,德国,法国,英国,意大利
- 使用英文半角逗号分隔数据进行存储,不换行;
- 缺点:数据中不能有英文逗号。
存储方式三:其他方式
中国$美国$日本$德国$法国$英国$意大利
- 使用其他符号 或 符号组合 分隔,建议采用特殊符号;
- 缺点:需要根据数据特点定义,通用性较差。
一维数据的处理
从 空格 分隔的文件中读入数据
# 中国 美国 日本 德国 法国 英国 意大利
txt = open(fname).read()
ls = txt.split()
f.close()
# 中国$美国$日本$德国$法国$英国$意大利
txt = open(fname).read()
ls = txt.split("$")
f.close()
采用空格分隔方式 将数据写入文件
ls = ['中国', "美国", "日本"]
f = open(fname, 'w')
f.write(' '.join(ls))
f.close()
采用特殊分隔方式将数据写入文件
ls = ['中国', '美国', '日本']
f = open(fname, 'w')
f.write('$'.join(ls))
单元小结
- 数据的维度:一维、二维、多维、高维
- 一维数据的表示:列表类型(有序) 和 集合类型(无序)
- 一维数据的存储:空格分隔、逗号分隔、特殊符号分隔
- 一维数据的处理:字符串方法 .split() 和 .join()
7.4 二维数据的格式化和处理
单元小结:
- 二维数据的表示:列表类型,其中每个元素也是一个列表;
- CSV格式:逗号分隔表示一维,按行分隔表示二维;
- 二维数据的处理:for循环 + .split() 和 join()
7.5 模块6:wordcloud库的使用
wordcloud是优秀的词云展示第三方库
词云以词语为基本单位,更加直观和艺术的展示文本
安装
?
7.6 实例12:政府工作报告词云
|