python学习笔记——第七章

一、文件的使用

 

1.文件的类型

文件是数据的抽象和集合,是存储在辅助存储器上的数据序列,是数据存储的一种形式;

文件展现形态:文本文件(由单一特定编码组成)和二进制文件(直接由比特01组成);

任何文件都会以二进制的形式打开;

 

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)

 

五、模块6wordcloud库的使用

 

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")

 

 

 

 

posted @ 2019-11-24 17:08  肖小小  阅读(983)  评论(0)    收藏  举报