北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)

前言

本文是对《北理工 嵩天/黄天宇/礼欣 Python语言程序设计》的学习笔记,供自己查阅使用。

文章目录

  1. 北理工嵩天Python语言程序设计笔记(目录)
  2. 北理工嵩天Python语言程序设计笔记(2 Python基本语法元素)
  3. 北理工嵩天Python语言程序设计笔记(3 Python基本图形绘制)
  4. 北理工嵩天Python语言程序设计笔记(4 基本数据类型)
  5. 北理工嵩天Python语言程序设计笔记(5 程序的控制结构)
  6. 北理工嵩天Python语言程序设计笔记(6 函数和代码复用)
  7. 北理工嵩天Python语言程序设计笔记(7 组合数据类型)
  8. 北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)
  9. 北理工嵩天Python语言程序设计笔记(9 程序设计方法学)
  10. 北理工嵩天Python语言程序设计笔记(10 Python计算生态概览)

笔记目录

  • 前言
  • 文章目录
  • 8 文件和数据格式化
    • 8.1文件的使用
      • 8.1.1 文件的类型
      • 8.1.2 文件的打开和关闭
      • 8.1.3 文件内容的读取
      • 8.1.4 数据的文件写入
      • 8.1.5 with 语句和写入缓冲
    • 8.2 实例11: 自动轨迹绘制
    • 8.3 一维数据的格式化和处理
      • 8.3.1 数据组织的维度
      • 8.3.2 一维数据的表示
      • 8.3.3 一维数据的存储
      • 8.3.4 一维数据的处理
    • 8.4 二维数据的格式化和处理
      • 8.4.1 二维数据的表示
      • 8.4.2 CSV数据存储格式
      • 8.4.3 二维数据的存储
      • 8.4.4 二维数据的处理
    • 8.5 模块6: wordcloud库的使用
      • 8.6.1 wordcloud库使用说明
      • 8.6.2 wordcloud库常规方法
      • 8.6.3 配置对象参数
    • 8.6 实例12: 政府工作报告词云


8 文件和数据格式化

8.1文件的使用

8.1.1 文件的类型

  • 文件是数据的抽象和集合

  • 文件展现形态:文本文件和二进制文件

    • 本质上,所有文件都是二进制形式存储
    • 形式上,所有文件采用两种方式展示
  • 文本文件:由单一特定编码组成的文件,由于存在编码,也被看成是存储着的长字符串:.txt文件、.py文件等

  • 二进制文件:直接由比特0和1组成,没有统一字符编码,.png文件、.avi文件等

8.1.2 文件的打开和关闭

  • 文件处理的步骤:打开-操作-关闭
    北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第1张图片

  • 文件的打开
    北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第2张图片
    注意:Windows路径使用\\ 在Python中为转义字符,所以用 / 或者 \\ 表示 \

“D:/PYE/f.txt”;“D:\\PYE\\f.txt”;“f.txt”;“./PYE/f.txt”
北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第3张图片

  • 文件的关闭

<变量名>.close()

# 文本形式打开文件
tf= open("f.txt", "rt")
print(tf.readline())
tf.close()
# 二进制形式打开文件
bf = open("f.txt", "rb")
print(bf.readline())
bf.close()

8.1.3 文件内容的读取

北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第4张图片
北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第5张图片
注意:它们读完之后再读是接着后面读,不是从头开始,文件操作指针停在当前位置。

  • 按数量读入,逐步处理

    fname= input("请输入要打开的文件名称:")
    fo= open(fname,"r")
    txt = fo.read(2)
    while txt != "":
        #对txt进行处理
        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()
    

8.1.4 数据的文件写入

北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第6张图片
北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第7张图片

fo= open("output.txt","w+")
ls = ["中国","法国","美国"]
fo.writelines(ls)
for line in fo:
	print(line)
fo.close()
>>> (没有任何输出)

fo= open("output.txt","w+")
ls = ["中国","法国","美国"]
fo.writelines(ls)
fo.seek(0)
for line in fo:
	print(line)
fo.close()
>>> 中国法国美国

8.1.5 with 语句和写入缓冲

(以下内容参考http://www.python3.vip/tut/py/basic/13/)

如果我们开发的程序 在进行文件读写之后,忘记使用close方法关闭文件, 就可能造成意想不到的问题。

我们可以使用with 语句 打开文件,像这样,就不需要我们调用close方法关闭文件。 Python解释器会帮我们调用文件对象的close方法。

如下

# open返回的对象 赋值为 变量 f
with open('tmp.txt') as f:
    linelist = f.readlines() 
    for line in linelist:
        print(line)

对文件的操作都放在with下面的缩进的代码块中。

  • 写入缓冲

执行write方法写入字节到文件中的时候,其实只是把这个请求提交给 操作系统。

操作系统为了提高效率,通常并不会立即把内容写到存储文件中, 而是写入内存的一个 缓冲区

等缓冲区的内容堆满之后,或者程序调用close 关闭文件对象的时候,再写入到文件中。

如果你确实希望,在调用write之后,立即把内容写到文件里面,可以使用 文件对象的 flush方法f.flush()

8.2 实例11: 自动轨迹绘制

  • 步骤1:定义数据文件格式(接口)
  • 步骤2:编写程序,根据文件接口解析参数绘制图形
  • 步骤3:编制数据文件
#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()
#自动绘制
fori 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.right(datals[i][2])
    else:
    	t.left(datals[i][2])

8.3 一维数据的格式化和处理

8.3.1 数据组织的维度

  • 一维数据:由对等关系的有序或无序数据构成,采用线性方式组织,对应列表、数组和集合等概念
  • 二维数据:由多个一维数据构成,是一维数据的组合形式,表格
  • 多维数据:由一维或二维数据在新维度上扩展形成
  • 高维数据:仅利用最基本的二元关系展示数据间的复杂结构,键值对
  • 数据的操作周期:存储<-> 表示<-> 操作

8.3.2 一维数据的表示

  • 如果数据间有序:使用列表类型
  • 如果数据间无序:使用集合类型

8.3.3 一维数据的存储

  • 存储方式一:空格分隔
  • 存储方式二:逗号分隔
  • 存储方式三:其他方式:使用其他符号或符号组合分隔,建议采用特殊符号

8.3.4 一维数据的处理

  • 一维数据的读入处理:从空格分隔的文件中读入数据

    txt= open(fname).read()
    ls = txt.split()
    f.close()
    
  • 一维数据的写入处理:采用空格分隔方式将数据写入文件

    ls = ['中国','美国','日本']
    f = open(fname, 'w')
    f.write(''.join(ls))
    f.close()
    

8.4 二维数据的格式化和处理

8.4.1 二维数据的表示

  • 列表类型可以表达二维数据
  • 使用二维列表,使用两层for循环遍历每个元素

8.4.2 CSV数据存储格式

  • CSV: Comma-Separated Values

  • 国际通用的一二维数据存储格式,一般.csv扩展名

  • 每行一个一维数据,采用逗号分隔,无空行

  • Excel和一般编辑软件都可以读入或另存为csv文件

  • 如果某个元素缺失,逗号仍要保留

  • 二维数据的表头可以作为数据存储,也可以另行存储

  • 逗号为英文半角逗号,逗号与数据之间无额外空格

8.4.3 二维数据的存储

  • 一般索引习惯:ls[row][column],先行后列
  • 根据一般习惯,外层列表每个元素是一行,按行存

8.4.4 二维数据的处理

  • 从CSV格式的文件中读入数据

    fo= open(fname)
    ls = []
    for line in fo:
        line = line.replace("\n","")
        ls.append(line.split(",")) 
    fo.close()
    
  • 将数据写入CSV格式的文件

    ls = [[],[],[]] #二维列表
    f = open(fname, 'w')
    for item inls:
    	f.write(','.join(item) + '\n') 
    f.close()
    
  • 二维数据的逐一处理

    ls = [[1,2],[3,4],[5,6]] #二维列表
    for row in ls:
        for column in row:
        	print(column)
    

8.5 模块6: wordcloud库的使用

  • wordcloud是优秀的词云展示第三方库

8.6.1 wordcloud库使用说明

  • wordcloud.WordCloud()代表一个文本对应的词云
  • 可以根据文本中词语出现的频率等参数绘制词云
  • 词云的绘制形状、尺寸和颜色都可以设定

8.6.2 wordcloud库常规方法

北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第8张图片

import wordcloud
c = wordcloud.WordCloud()  # 配置对象参数
c.generate("wordcloudby Python")  # 加载词云文本
c.to_file("pywordcloud.png")  # 输出词云文件

北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第9张图片

8.6.3 配置对象参数

北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第10张图片
北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第11张图片
北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第12张图片
北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第13张图片

import wordcloud
txt = "life is short, you need python"
w = wordcloud.WordCloud(background_color= "white")
w.generate(txt)
w.to_file("pywcloud.png")

import jieba
import wordcloud
txt = "程序设计语言是计算机能够理解和\
识别用户操作意图的一种交互体系,它按照\
特定规则组织计算机指令,使计算机能够自\
动进行各种运算处理。"
w = wordcloud.WordCloud( width=1000,\
font_path="msyh.ttc",height=700)
w.generate(" ".join(jieba.lcut(txt)))
w.to_file("pywcloud.png")

8.6 实例12: 政府工作报告词云

政府工作报告等文 -> 有效展示的词云

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(font_path="msyh.ttc",
                        width=1000, height=700, background_color="white",
                        stopwords={'的', '和', '是', '在', '以', '为', '对'})
w.generate(txt)
w.to_file("grwordcloud.png")
  • 更有形的词云
from imageio import imread
mask = imread("5.png")
  • 中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要
    北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)_第14张图片

你可能感兴趣的:(#,Python模块有关问题,python,linux,人工智能)