文件使用
文件
- 文本文件 - - -二进制文件
本质上多有的文件都是二进制形式存储,形式上文件采用两种方式展示 - 文本文件由单一特定编码组成的文件,如UTF-8编码,被看成存储着的长字符串(.txt,.py) - - - - rt打开
- 二进制文件由比特0和1组成,没有统一字符编码(.png,.avi) - - - - rb打开
#文本形式打开文件
tf = open("f.txt","rt")#rt即为默认
print(tf.readline())
tf.close()
#二进制形式打开文件
tf = open("f.txt","rb")
print(tf.readline())
tf.close()
- 文件打开关闭
文件存储状态 - - - open() - - - 文件占用状态 - - - close() - - - 文件存储状态
绝对路径"D:/doc/f.txt"
,"D:\\doc\\f.txt"
;相对路径"./doc/f.txt"
,"f.txt"
- 打开模式
'r'
只读,默认值,不存在返回FileNotFoundError;'w'
覆盖写,不存在则创建,存在则覆盖;'x'
创建写,不存在则创建,存在FileExistsError;'a'
追加写,不存在则创建,存在则追加;'b'
二进制;'t'
文本模式,默认;’+'与rwxa一起,在原功能基础上增加同时读写能力
f = open("f.txt","a+")
文本形式追加写模式+读文件;wb二进制覆盖写
文件内容的读取
<f>.read(size=-1)
读入全部内容,若有参数,度入前size长度
<f>.readline(size=-1)
读入一行,若有参数,读入该行前size长度
<f>.readlines(hint=-1)
读入文件所有行,每行为元素形成列表,给参数则读入前hint行
遍历全文本:(1).read
读大文件会有缺陷(2)txt = f.read(x);while txt != "":txt=f.read(x)
逐行遍历:(1)for line in f.readlines():print(line)
(2)for line in <文件句柄>:print(line)
数据的文件写入
<f>.write(s)
向文件写入一个字符串或字节流
<f>.writelines(lines)
将一个元素全为字符串的列表写入文件
<f>.seek(offset)
改变当前文件操作指针的位置,offset:0文件开头1当前位置2文件结尾
f=open("**.txt","w+")
ls = ["A","C","B"]
f.writelines(ls)#此时指正指向文件结尾
f.seek(0)#指向文件开头
for line in f:
print(line)
f.close()
实例11 自动轨迹绘制
要求:不是写好代码如海龟,而是读入数据解析数据绘制图形
数据源 300,0,144,1,0,0 arg1
行进距离,arg2
转向0左转1右转,arg3
转向角度,arg456
rgb
map
内嵌函数,将第一个参数的功能作用于第二个参数的每一个元素
#AutoTraceDraw.py
import turtle as t
t.title('auto trace draw')
t.setup(800,600,0,0)
t.pencolor("red")
t.pensize(5)
#data get
datals = []
f = open("data.txt")
for line in f:
line = line.replace("\n","")
datals.append(list(map(eval,line.split(","))))
f.close
#auto draw
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])
一维数据的格式化处理
- 列表类型可以表达一维有序数据,for循环遍历数据,对每个数据进行处理
- 集合类型{}表达一维无序数据,for遍历
- 存储:使用一个或多个空格分隔进行存储(数据中无空格),不换行;逗号分隔;特殊符号分如$
- 读入处理
txt=open(fname).read();ls=txt.split("$");f.close
- 写入处理
ls = ['中','美','日']
f = open(fname,'w')
f.write(' ',join(ls))
f.close
二维数据的格式化处理
- 二维列表表示二维数据
- CSV数据存储 Comma-Separated Values
国际通用的一二维数据存储格式(.csv),每行一个一维数据逗号分隔无空行 - 读入处理 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 in ls:
f.write(',',join(item)+'\n')
f.close()
- 逐一处理
ls = [[],[],[]]
for row in ls:
for column in row:
print(ls[row][column])
模块6 wordcloud库的使用
- wordcloud库把词云当作一个WordCloud对象;worldcloud.WordCloud()代表一个文本对应的词云
w = wordcloud.WordCloud()
w.generate("py an www")
w.generate(txt)向WordCloud对象w中加载文本txt
w.to_file("outfile.png")
将词云输出为图像文件
步骤:分隔,以空格分隔单词;统计,单词出现次数并过滤短词;字体,根据统计配置字号;布局,颜色环境尺寸
w = wordcloud.WordCloud(<参数>)
图片宽高
w = wordcloud.WordCloud(width=600)
;w = wordcloud.WordCloud(height=400)
w = wordcloud.WordCloud(min_font_size=10)
词云字体最小字号,默认4号
w = wordcloud.WordCloud(max_font_size=20)
词云字体最大字号,默认根据高度调节
w = wordcloud.WordCloud(font_step=2)
词云字体字号步进间隔,默认1
w = wordcloud.WordCloud(font_path="msyh.ttc")
词云字体文件路径微软雅黑msyh,默认None
w = wordcloud.WordCloud(max_words=20)
最大单词数默认200
w = wordcloud.WordCloud(stop_words={"python"})
不显示单词列表
指定词云形状,默认长方形,引用imread()函数,mask,图片导入from scipy.misc import imread
from scipy.misc import imread
mk=imread("pic.png")
w=wordcloud.WordCloud(mask=mk)
w = wordcloud.WordCloud(background_color="write")
背景色默认黑
import wordcloud
txt = "life is short, you need python"
w = worldcloud.WorldCloud(background_color="white")
w.generate(txt)
w.to_file("pywc.png")
实例12 政府工作报告词云
#GovRptwordcloud.py
import jieba
import wordcloud
f = open("newtimes.txt","r",encoding="utf-8")
t=f.read()
f.close()
ls=jieba.lcut(t)
txt=" ".join(ls)
w = wordcloud.Word.Cloud(font_path="msyh.ttc",width=1000,height=700,background_color="white",max_words=15)
w.generate(txt)
w.to_file("newtimes.png")