文件的使用
文件是数据的抽象和集合
文件是存储在辅助存储器上的数据序列
文件是数据存储的一种形式
文件展现形态:文本文件和二进制文件
文本文件 vs. 二进制文件
文件文件和二进制文件只是文件的展示方式
本质上,所有文件都是二进制形式存储
形式上,所有文件采用两种方式展示
文本文件
文件是数据的抽象和集合
由单一特定编码组成的文件,如 UTF-8 编码
由于存在编码,也被看成是存储着的长字符串
适用于例如:.txt 文件、.py 文件等
二进制文件
文件是数据的抽象和集合
直接由比特 0 和 1 组成,没有统一字符编码
一般存在二进制 0 和 1 的组织结构,即文件格式
适用于例如:.png 文件、.mp4 文件等
文件的打开: open(<fileName>, <mode>)
fileName的几种取值:
1 2 3 4 "D:/PYE/f.txt" "D:\\PYE\\f.txt" "f.txt" "./PYE/f.txt"
文件的打开模式
描述
‘r’
只读模式,默认值,如果文件不存在,返回FileNotFoundError
‘w’
覆盖写模式,文件不存在则创建,存在则完全覆盖
‘x’
创建写模式,文件不存在则创建,存在则返回FileExistsError
‘a’
追加写模式,文件不存在则创建,存在则在文件最后追加内容
‘b’
二进制文件模式
‘t’
文本文件模式(默认值)
‘+’
与 r/w/x/a 一同使用,在原功能基础上增加同时读写功能
文件的关闭:<变量名>.close()
文件的读取:
1 2 3 4 5 6 7 8 9 10 <f>.read(size=-1 ) <f>.readline(size=-1 ) <f>.readlines(hint=-1 ) 如果给出参数,读入前hint行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 print ('方法一:' )file = open ("data.txt" ) txt = file.read() file.close() print ('方法二:' )file = open ("data.txt" ) txt = file.read(128 ) while txt != "" : txt = file.read(128 ) file.close() print ('方法三:' )file = open ("data.txt" ) for line in file.readlines(): print (line) file.close() print ('方法四:' )file = open ("data.txt" ) for line in file: print (line) file.close()
文件的数据写入:
1 2 3 4 5 <f>.write(s) <f>.writelines(lines)
1 2 3 4 5 6 7 fo = open ("output.txt" ,"w+" ) ls = ["China" , "France" , "German" ] fo.writelines(ls) fo.seek(0 ) for line in fo: print (line) fo.close()
2 实例 11: 自动轨迹绘制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import turtle as tt.title('自动轨迹绘制' ) t.setup(800 , 600 ) 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() 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.rt(datals[i][2 ]) else : t.lt(datals[i][2 ])
3 一维数据的格式化和处理
一维数据
由对等关系的有序或无序数据构成,采用线性方式组织
对应列表、数组和集合等概念
二维数据
由多个一维数据构成,是一维数据的组合形式
表格是典型的二维数据。其中,表头是二维数据的一部分
多维数据
由一维或二维数据在新维度上扩展形成
高维数据
仅利用最基本的二元关系展示数据间的复杂结构
一维数据的表示
如果数据间有序:使用列表类型
如果数据间无序:使用集合类型
一维数据的存储
空格、逗号等其他分隔
1 2 3 4 5 6 7 8 9 10 ls = ['中国' , '土耳其' , '瑞典' ] file = open ("data.txt" , "w" ) file.write("," .join((ls))) file.close() file = open ("data.txt" ) ls = file.read().split(',' ) print (ls)
4 二维数据的格式化和处理
二维数据的表示
列表类型可以表达二维数据
使用两层for循环遍历每个元素
外层列表中每个元素可以对应一行,也可以对应一列
CSV数据存储格式
CSV: Comma-Separated Values
国际通用的一二维数据存储格式,一般.csv扩展名
每行一个一维数据,采用逗号分隔,无空行
Excel软件可读入输出,一般编辑软件都可以产生
如果某个元素缺失,逗号仍要保留
二维数据的表头可以作为数据存储,也可以另行存储
逗号为英文半角逗号,逗号与数据之间无额外空格
按行存?按列存?
按行存或者按列存都可以,具体由程序决定
一般索引习惯:ls[row][column],先行后列
根据一般习惯,外层列表每个元素是一行,按行存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 fo = open (fname) ls = [] for line in fo: line = line.replace("\n" ,"" ) ls.append(line.split("," )) fo.close() ls = [[], [], []] f = open (fname, 'w' ) for item in ls: f.write(',' .join(item) + '\n' ) f.close()
5 模块6: wordcloud库的使用
6 实例12: 政府工作报告词云
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import jiebaimport wordcloudf = open ("新时代中国特色社会主义.txt" , "r" , encoding="utf-8" ) t = f.read() f.close() ls = jieba.lcut(t) txt = " " .join(ls) w = wordcloud.WordCloud( \ width = 1000 , height = 700 ,\ background_color = "white" , font_path = "msyh.ttc" ) w.generate(txt) w.to_file("grwordcloud.png" )