python入门day13(文件、词云制作)

1.文件就是数据的抽象和集合,文件是数据存储的集合,他们都是以二进制进行存储的,但是展示方式有二进制文件文本文件两种。
(1)文本文件:由特定单一编码组成例如UTF-8编码,由于存在编码,文本文件也被看作是存储的长的字符串,比如.py文件。
(2)二进制文件:直接由比特0和1组成,没有统一的字符编码,一般0,1是根据预定义的特定方式来进行编码。
2.文件的处理要经过三个步骤:打开、操作、关闭。
在这里插入图片描述
在这里插入图片描述
这里我们要注意:在我们给出一个文件的绝对路径的时候python会将其中的反斜杠(\)解释为转义符,因此当我们给出路径的时候,如果使用的是反斜杠的话可能会导致错误,那我们有两个解决方案,一是我们可以用正斜杠来代替反斜杠,二是我们可以使用两个反斜杠来表示我们的反斜杠。
当我们使用相对路径的时候,,指的是从可执行程序的当前目录起找他的PYE目录以及这个目录下的f.txt文件,如果当前的程序与要打开的文件在相同的目录下我们可以直接使用f.txt(文件名称)。无论采用哪种方式我们最终的目的是要让程序在他运行的当前目录下能够很好地找到这个文件。
在这里插入图片描述
我们默认的打开模式是文本模式而不是二进制模式,下面为打开文件的一些例子
在这里插入图片描述
在这里插入图片描述
当我们完成了对文件的操作的时候应该记得关闭文件这是一个良好的习惯,但是,如果我们忘记关闭文件的话,只要程序正常退出,那么程序会帮助我们们自动关闭掉该文件。
在这里插入图片描述
在这里插入图片描述
对于文件的全文本进行操作,我们给出以下几种方法,第一种,直接将文本内容进行读取,优点是他可以一次性将文本内容读入,缺点是:如果这个文件很大,那么他将耗费很大的资源和时间,这种情况下,这个方法显然不划算。
在这里插入图片描述
方法二我们采用了两个两个进行读入并且对读入的数据进行处理的方法,这样我们就实现了按数量读入,并且逐步处理的方法。在这里插入图片描述
方法三:也是我们平时最常见的方法:分行处理法因为我们的文本文件都是一行一行的进行存储的,在每一行结束的时候会有一个换行符,下面我们先介绍一次读入,分行处理的方法。fo是文件句柄。
在这里插入图片描述
方法二:逐行地将信息从文件中读出并且进行处理,即分行读入、逐行处理的方法。
在这里插入图片描述
在这里插入图片描述
上图中的writelines函数虽然向文本中输入的是一个列表,但是再将列表传入到文件中时会先将列表中的元素进行拼接,然后一起写入到文件中。
在这里插入图片描述
如果我们学习过C语言的话,我们知道,在对文件进行操作的时候实际上是文件指针在起作用,我们的调用函数,写入数据等等操作都离不开文件指针,.seek()函数就是对文件指针进行了操作 ,它可以使指针指向文件末尾、当前位置或者文件头。接下来我们通过一个实例代码来让大家了解一下seek函数的用法,代码如下:
在这里插入图片描述
在该代码中,如果我们没有输入矩形框中的seek代码,我们会发现程序不会有任何输出,那么我们可能就会产生疑问,我明明列表参数写入到文件中了,为什么没有输出呢?答案就是,当我们在文件中写入数据之后,文件指针其实还是停留在文件的末尾,此时如果你调用打印函数的话,程序就会从当前函数指针的位置开始遍历文件,直到文件末尾,并且将内容进行打印,因此我们会发现不会有任何的东西被打印出来。此时就需要用到我们的.seek()函数来使文件指针重新回到文本的首部,然后再进行遍历,我们就会发现之前我们写入的数据得到了打印。
在这里插入图片描述
for line in fo来读入文件的每一行,由于每一行最后都会有一个回车,所以我们使用.replace()方法将回车转换为空字符,我们使用.split()方法将每一行的元素用逗号分隔开并形成列表并把这个列表增加到ls中作为其中的元素,当for循环结束的时候我们的ls就是包含我们所写入的列表数据的信息。
词云:使用词云的时候我们首先需要对其进行安装,windows系统下,我们打开命令行窗口,输入pip install wordcloud命令来安装该库
在这里插入图片描述
等待提示你已经安装成功的时候就可以关闭窗口,进行代码的编写了。
wordcloud库的参数配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面我们来看一下实例:

import jieba
import wordcloud
"""from scipy.misc import imread
mask = imread(".jpg")          #引入背景图片"""
f = open("F:/all.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=1200, height= 900, background_color="black", \
        )#词云的宽度为1000像素,高度为700像素,字体为微软雅黑
w.generate(txt)#加载这段文本
w.to_file("class12.png")

我们就可以根据文本的内容来得到相应词云图案,注意,该图案不会直接生成在你的代码界面,而是你要去你的.py文件保存的位置去寻找该图片

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值