Python嵩天MOOC学习笔记
第⑦周:文件和数据
一、文件的使用
①文件的分类 文本文件: 由单一特定编码组成的文件,如UTF-8编码; 被看成是存储着的长字符串; 例如:txt文件、.py文件
二进制文件: 由0和1组成,没有统一字符编码; 一般存在0和1的组织结构,即文件格式; 例如:png、avi
②文件的打开与关闭 文件名
<变量名(句柄)> = open(<文件名>,<打开模式>)
绝对路径法:
<> = open("D:/PYE/f.txt",<>)
或者 <> = open("D:\\PYE\\f.txt",<>)
注意时斜杠或者双反斜杠!
相对路径法:
如果程序存储在D:下,则用
<> = open("./PYE/f.txt",<>)
如果在同一文件内:
<> = open("f.txt",<>)
打开模式:
①f = open(“f.txt”) 默认文本形式,只读 和f = open(“f.txt”,“rt”)一样 ②b:只读 ③打开时要指定读和写的模式 ④’+'打开模式的精髓在于它能够同时赋予文件的读写权限。
关闭模式: <变量名>.close() 注意是变量名!!不是文件名
③文件内容的读取 基本语法
<f>.read(size) :读入全部内容,如果给出参数就是读入前size长度的内容
<f>.readline(size):读入一行,如果给出参数就是读入该行前size长度
<f>.readlines(hint):读入所有行,以每行为元素形成列表,如果给出参数则读入前hint行
文件的全文本操作: 方法一:
fname = input("请输入要打开的文件名称")
fo = open(fname,"r")
txt = fo.read()
...
fo.close()
字符串的处理方法,不适合体量巨大的文件
方法二:
fname = input("请输入要打开的文件名称")
fo = open(fname,"r")
txt = fo.read(2)
while 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()
④数据的文件写入 f.write(s) f.writelines(lines) :拼接后写入 f.seek(offset)
fo = open("output.txt","w+")
ls = ["中国","法国","美国"]
fo.writelines(ls)
fo.seek(0)
for line in fo:
print(line)
fo.close()
二、自动轨迹绘制
△不是通过写代码而是写数据来绘制轨迹,数据脚本是自动化的重要一步
思路: 定义数据文件格式(接口) 编写程序,根据接口解析参数绘制图形 编制数据文件
思维: 自动化思维:数据与功能分离 接口化设计:格式化设计接口 二维数据应用:如何处理成二维列表
三、一维数据的格式化
存储 -> 表示 ->操作 一维的存储:
- 列表类型可以表达一维有序数据
- 集合类型可以表达一维无序数据
- for遍历
- 存储方式:①用空格分隔不换行,不适合本身含空格的数据;②用逗号分隔;③特殊符号分隔
一维的处理:
txt = open(fname).read()
ls = txt.split()
f.close
ls = ["中国","美国","日本"]
f = open(fname,"w")
f.write(' '.join(ls))
f.close()
四、二维数据的格式化
数据存储格式:
- 二维数据用二维列表,使用两层for遍历
- 采用CSV即Comma-Seperated Values,用逗号分隔的值,用.csv扩展名;每行一个一维数据,逗号分隔,无空行;一般来说,CSV文件都是文本文件,由相同编码字符组成。
- Excel和一般编辑软件都可以读入或另存为csv格式
- 如果某个元素缺失,逗号仍要保留
- 二维数据的表头可以作为数据存储,也可以另行存储
- 索引习惯:ls[row][column]
数据读入处理: 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 = [[1,2],[3,4],[5,6]]
for row in ls:
for column in row:
print(column)
五、应用实例:词云
- wordcloud库把词云当做一个WordCloud对象
- wordcloud.WordCloud()代表一个文本对应的词云
- 先使用w = wordcloud.WordCloud(),w叫做对象参数,然后再使用以下方法
方法 | 描述 |
---|
w.generate(txt) | 向WordCloud对象w中加载文本txt 如>>>w.generate(“Python and wordcloud”) ,txt要求是由空格分隔的长文本 | w.to_file(filename) | 将词云输出为图像文件,.png或.jpg格式 如>>>w.to_file(“outfile.png”) |
- 步骤:配置对象参数;加载词云文本;输出词云文件
- 词云会把一到两个字符的单词过滤掉;中文需要用jieba分词
- 修改配置参数:width height min_font_size max_font_size font_step font_path max_words stop_words mask background_color
六、政府工作报告词云制作
思路:
- 读取文件,分词整理
- 设置并输出词云
- 观察结果,优化迭代
|