码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 北理工嵩天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 文件的打开和关闭

    • 文件处理的步骤:打开-操作-关闭
      在这里插入图片描述

    • 文件的打开
      在这里插入图片描述
      注意:Windows路径使用\,\ 在Python中为转义字符,所以用 / 或者 \\ 表示 \ ,

    “D:/PYE/f.txt”;“D:\\PYE\\f.txt”;“f.txt”;“./PYE/f.txt”
    在这里插入图片描述

    • 文件的关闭

    <变量名>.close()

    # 文本形式打开文件
    tf= open("f.txt", "rt")
    print(tf.readline())
    tf.close()
    # 二进制形式打开文件
    bf = open("f.txt", "rb")
    print(bf.readline())
    bf.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    8.1.3 文件内容的读取

    在这里插入图片描述
    在这里插入图片描述
    注意:它们读完之后再读是接着后面读,不是从头开始,文件操作指针停在当前位置。

    • 按数量读入,逐步处理

      fname= input("请输入要打开的文件名称:")
      fo= open(fname,"r")
      txt = fo.read(2)
      while txt != "":
          #对txt进行处理
          txt= fo.read(2)
      fo.close()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • 一次读入,分行处理

      fname= input("请输入要打开的文件名称:")
      fo= open(fname,"r")
      for line in fo.readlines():
      	print(line)
      fo.close()
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 分行读入,逐行处理

      fname= input("请输入要打开的文件名称:")
      fo= open(fname,"r")
      for line in fo:
      	print(line)
      fo.close()
      
      • 1
      • 2
      • 3
      • 4
      • 5

    8.1.4 数据的文件写入

    在这里插入图片描述
    在这里插入图片描述

    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()
    >>> 中国法国美国
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    对文件的操作都放在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])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

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

    8.3.1 数据组织的维度

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

    8.3.2 一维数据的表示

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

    8.3.3 一维数据的存储

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

    8.3.4 一维数据的处理

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

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

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

    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()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 将数据写入CSV格式的文件

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

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

    8.5 模块6: wordcloud库的使用

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

    8.6.1 wordcloud库使用说明

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

    8.6.2 wordcloud库常规方法

    在这里插入图片描述

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

    在这里插入图片描述

    8.6.3 配置对象参数

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    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")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    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")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 更有形的词云
    from imageio import imread
    mask = imread("5.png")
    
    • 1
    • 2
    • 中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要
      在这里插入图片描述
  • 相关阅读:
    LeetCode_回溯_中等_491.递增子序列
    人脸识别顶会论文及源码合集,含2023最新
    R | R及Rstudio安装、运行环境变量及RStudio配置
    react hooks 生命周期渲染时机简述
    position属性练习:画一个爱心送给你。
    nginx下载安装和日志切割
    NTFS磁盘格式读写工具Tuxera NTFS 2023 for Mac中文破解版v2023含最新激活序列号
    Go 命令
    Dubbo注册中心之Redis原理概述
    Java Metrics系统性能监控工具
  • 原文地址:https://blog.csdn.net/yyywxk/article/details/127692324
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号