文件的两种展示形态:文本文件和二进制文件,但都以二进制01形成存储
文本文件:有统一编码
二进制文件:在01之上没有任何编码
以文本形式打开文件:
以二进制形式打开文件:
文件关闭:文件句柄.close()
程序正常退出的时候也会关闭文件
文件内容的读取
读入一行:readline read返回的是一个大字符串
读入所有行:readlines 返回的是一个列表
听说hint是读入的字节长度,即限定长度内的行,并不是前hint行哦
例子:
这样耗费内存大,速度慢
分批读入:read(2)读入两个字节
对于分行(每一行结束有回车)的文本文件,更多地用逐行遍历:
这个列表会消耗很多内存,分行读入:
如果保错加个encoding=“utf-8”
数据的文件写入
注意:writelines写入是将各个字符串元素拼接在一起写入文件的,各个元素之间没有换行也没有空格
改变文件操作指针位置:seek
在一个程序中同时读写,使用指针位置。例子:
通过脚本(数据接口)读入数据来绘制,而不是把数据写死在代码里
代码和数据贴在下面:
#根据文件数据绘制轨迹
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","")
#1.将一行根据","进行分割为若干个字符串
#2.map:将第一个参数的功能(去除"")作用于第二个参数(列表或集合)的每个元素
#3.把所有字符串转化为数字的数据,存成一个列表,加入datals中(列表套列表)
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.right(datals[i][2])
else:
t.left(datals[i][2])
300,0,144,1,0,0
300,0,144,0,1,0
300,0,144,0,0,1
300,0,144,1,1,0
300,0,108,0,1,1
184,0,72,1,0,1
184,0,72,0,0,0
184,0,72,0,0,0
184,0,72,0,0,0
184,1,72,1,0,1
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,720,0,0,0
分类:
wordcloud是库名
WordCloud是一个词云对象
常规方法:
这是将一段文本通过jieba的lcut函数分割为分词列表,再用join将列表转换为用空格分隔每一个元素的长字符串,给generate
原理同模块,需要注释的写在代码里啦。
经弹幕提示scipy不再支持imread,得改用第三方库,所以形状就没搞了
import jieba
import wordcloud
#修改词云形状
# from scipy.mise import imread
# mask =imread("fivestar.png")
# 形状图片要求背景是白色,其他地方是形状
#读文件
f=open("关于实施乡村振兴战略的意见.txt","r",encoding="utf-8")
t=f.read()#文件读出字符串放t
f.close()
ls=jieba.lcut(t)#字符串分词为列表放ls
txt="".join(ls)#列表按空格分隔为字符串
#词云的处理
w=wordcloud.WordCloud(font_path="msyh.ttc",width=1000,height=700,background_color="blue")
# (mask=mask)
w.generate(txt)
w.to_file("wordcloud.jpg")