python学习笔记——第七章
一、文件的使用
1.文件的类型
文件是数据的抽象和集合,是存储在辅助存储器上的数据序列,是数据存储的一种形式;
文件展现形态:文本文件(由单一特定编码组成)和二进制文件(直接由比特0和1组成);
任何文件都会以二进制的形式打开;
2.文件的打开和关闭
文件处理的步骤: 打开-操作-关闭;
打开: 变量名 = open(文件名,打开模式)
打开模式:
'r' 只读模式,默认值,如果文件不存在,返回FileNotFoundError
'w' 覆盖写模式,文件不存在则创建,存在则完全覆盖
'x' 创建写模式,文件不存在则创建,存在则返回FileExistsError
'a' 追加写模式,文件不存在则创建,存在则在文件最后追加内容
'b' 二进制文件模式
't' 文本文件模式,默认值
'+' 与r/w/x/a一同使用,在原功能基础上增加同时读写功能
Eg: f = open("f.txt", "a+")- 文本形式、追加写模式+ 读文件
f = open("f.txt", "x")- 文本形式、创建写模式
文件的关闭: 变量名.close()
文本形式打开文件:tf = open("f.txt", "rt")
print(tf.readline())
tf.close()
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() ['中国是一个伟大的国家!'];
Eg:
fname = input("请输入要打开的文件名称:")
fo = open(fname,"r")
txt = fo.read() #可替换为别的各种操作
fo.close()
全文本操作:
txt = fo.read() - 一次读入,统一处理
txt = fo.read(2) -按数量读入,逐步处理
逐行操作:
for line in fo.readlines(): -一次读入,分行处理
for line in fo: - 分行读入,逐行处理
4.数据的文件写入
<f>.write(s) 向文件写入一个字符串或字节流
>>>f.write("中国是一个伟大的国家!");
<f>.writelines(lines) 将一个元素全为字符串的列表写入文件
>>>ls = ["中国", "法国", "美国"]
>>>f.writelines(ls)中国法国美国;
<f>.seek(offset) 改变当前文件操作指针的位置,offset含义如下:0 – 文件开头; 1 – 当前位置; 2 – 文件结尾
>>>f.seek(0) #回到文件开头;
二、实例11:自动轨迹绘制
#AutoTraceDraw.py
import turtle as t
t.title('自动轨迹绘制')
t.setup(800, 600, 0, 0)
t.pencolor("red")
t.pensize(5)
#数据读取
datals = []
f = open("data.txt")
for line in f:
line = line.replace("\n","")
datals.append(list(map(eval, line.split(","))))
f.close()
#自动绘制
for i in range(len(datals)):
t.pencolor(datals[i][3],datals[i][4],datals[i][5])
t.fd(datals[i][0])
if datals[i][1]:
t.rt(datals[i][2])
else:
t.lt(datals[i][2])
三、一维数据的格式化和处理
1.数据组织的维度
一维数据:由对等关系的有序或无序数据构成,采用线性方式组织;(列表、数组、集合)
二维数据:由多个一维数据构成,是一维数据的组合形式;(表格)
多维数据:由一维或二维数据在新维度上扩展形成;
高维数据:仅利用最基本的二元关系展示数据间的复杂结构;
数据的操作周期:存储 <-> 表示 <-> 操作
2.一维数据的表示
如果数据间有序:使用列表类型; ls = [3.13, 3.49, 3.76]
如果数据间无序:使用集合类型; st = {3.13, 3.49, 3.76}
3.一维数据的存储
存储方式一:空格分隔,使用一个或多个空格分隔进行存储,不换行;
存储方式二:逗号分隔,使用英文半角逗号分隔数据进行存储,不换行;
存储方式三:其他方式,使用其他符号或符号组合分隔; 中国$美国$日本
4.一维数据的处理
存储 <-> 表示 的转换
读入:txt = open(fname).read()
ls = txt.split()
f.close()
从空格分隔的文件中读入数据:ls = txt.split()
从特殊符号分隔的文件中读入数据:ls = txt.split("$")
写入:ls = ['中国','美国','日本']
f = open(fname, 'w')
f.write(' '.join(ls))
f.close()
采用空格分隔方式将数据写入文件:f.write(' '.join(ls))
采用特殊分隔方式将数据写入文件:f.write('$'.join(ls))
四、二维数据的格式化和处理
1.二维数据的表示
使用列表类型表达;
- 使用两层for循环遍历每个元素
[ [3.1398, 3.1349, 3.1376],
[3.1413, 3.1404, 3.1401] ]
2.CSV格式与二维数据的存储
CSV: 国际通用的一二维数据存储格式,一般.csv扩展名;每行一个一维数据,采用逗号分隔,无空行;Excel和一般编辑软件都可以读入或另存为csv文件;
3.二维数据的处理
从CSV格式的文件中读入数据:
fo = open(fname)
ls = [] #生成一个二维空列表ls
for line in fo: #读入文件的每一行
line = line.replace("\n","") #将每一行最后的回车替换为空字符
ls.append(line.split(",")) #将元素按照逗号分隔开形成列表,并把此列表增加到ls列表中
fo.close()
将数据写入CSV格式的文件:
ls = [[], [], []] #二维列表
f = open(fname, 'w') #
for item in ls: #将ls中的每一个元素作为一行写入到文件中
f.write(','.join(item) + '\n') #对item中的元素之间增加逗号,且在最后增加/n
f.close()
逐一遍历(采用二层循环):
ls = [[1,2], [3,4], [5,6]] #二维列表
for row in ls: #遍历其中每一行
for column in row: #遍历每一列
print(column)
五、模块6:wordcloud库的使用
1.wordcloud库基本介绍
wordcloud是优秀的词云展示第三方库,词云以词语为基本单位,更加直观和艺术地展示文本;
安装:(cmd命令行) pip install wordcloud
2.wordcloud库使用说明
wordcloud库把词云当作一个WordCloud对象;
w = wordcloud.WordCloud() -以WordCloud对象为基础,配置参数、加载文本、输出文件;
w.generate(txt) 向WordCloud对象w中加载文本txt
>>>w.generate("Python and WordCloud")
w.to_file(filename) 将词云输出为图像文件,.png或.jpg格式
>>>w.to_file("outfile.png")
词云绘制步骤:
import wordcloud
c = wordcloud.WordCloud(参数) - 步骤1:配置对象参数
c.generate("wordcloud by Python") - 步骤2:加载词云文本
c.to_file("pywordcloud.png") - 步骤3:输出词云文件
其中wordcloud库的作用: 分隔: 以空格分隔单词;统计: 单词出现次数并过滤;字体: 根据统计配置字号;布局: 颜色环境尺寸;
配置对象参数:
width 指定词云对象生成图片的宽度,默认400像素
>>>w=wordcloud.WordCloud(width=600)
height 指定词云对象生成图片的高度,默认200像素
>>>w=wordcloud.WordCloud(height=400)
min_font_size 指定词云中字体的最小字号,默认4号
>>>w=wordcloud.WordCloud(min_font_size=10)
max_font_siz 指定词云中字体的最大字号,根据高度自动调节
>>>w=wordcloud.WordCloud(max_font_size=20)
font_step 指定词云中字体字号的步进间隔,默认为1
>>>w=wordcloud.WordCloud(font_step=2)
font_path 指定字体文件的路径,默认None
>>>w=wordcloud.WordCloud(font_path="msyh.ttc")
max_words 指定词云显示的最大单词数量,默认200
>>>w=wordcloud.WordCloud(max_words=20)
stop_words 指定词云的排除词列表,即不显示的单词列表
>>>w=wordcloud.WordCloud(stop_words={"Python"})
Mask 指定词云形状,默认为长方形,需要引用imread()函数
>>>from scipy.misc import imread
>>>mk=imread("pic.png")
>>>w=wordcloud.WordCloud(mask=mk)
background_color 指定词云图片的背景颜色,默认为黑色
>>>w=wordcloud.WordCloud(background_color="white")
实例,将英文文本变为词云:
import wordcloud #引入词云库
txt = "life is short, you need python" #获得文本
w = wordcloud.WordCloud( \background_color = "white") #建立词云对象
w.generate(txt) #将文本加载到对象中
w.to_file("pywcloud.png") #将词云输出为png文件
六、实例12:政府工作报告词云
常规矩形词云:
#GovRptWordCloudv1.py
import jieba
import wordcloud
f = open("新时代中国特色社会主义.txt", "r", encoding="utf-8")
t = f.read()
f.close()
ls = jieba.lcut(t)
txt = " ".join(ls)
w = wordcloud.WordCloud( \
width = 1000, height = 700,\
background_color = "white",
font_path = "msyh.ttc"
)
w.generate(txt)
w.to_file("grwordcloud.png")

浙公网安备 33010602011771号