文件的使用
>文件的类型
文件的理解:文件是数据的抽象和集合
-文件时存储在辅助存储器上的数据序列
-文件是数据存储的一种形式
-文件展现形态:文本文件和二进制文件
文本文件vs.二进制文件
-文本文件和二进制文件只是文件的展示方式
-本质上,所有文件都是二进制形式存储
-形式上,所有文件采用两种方式展示
文本文件
-由单一特定编码组成的文件,如UTF-8编码
-由于存在编码,也被看成是存储着长字符串
-适用于例如:.txt文件、.py文件等
二进制文件
-直接由比特0和1的组织,没有统一字符编码
-一般存在二进制0和1的组织结构,即文件格式
-适用于例如:.png文件、.avi文件等
-文本形式:中国是个伟大的国家!
-二进制形式:b'xd6xd0xb9xfaxcaxc7xb8xf6xcexb0xb4xf3xb5 xc4xb9xfaxbcxd2xa3xa1'
f.txt文件保存: "中国是个伟大的国家!"
#文本形式打开文件 tf = open("f.txt", "rt") print(tf.readline()) tf.close() #中国是个伟大的国家!
#二进制形式打开文件 bf = open("f.txt", "rb") print(bf.readline()) bf.close() #b'xd6xd0xb9xfaxcaxc7xb8xf6xcexb0 xb4xf3xb5xc4xb9xfaxbcxd2xa3xa1'
>文件的打开和关闭
文件处理的步骤:打开-操作-关闭
文件的关闭
<变量名>.close
>文件内容的读取
>数据文件写入
fo = open("output.txt","w+") ls = ["中国", "法国", "美国"] fo.writelines(ls) for line in fo: print(line) fo.close()
#没有任何输出
fo = open("output.txt","w+") ls = ["中国", "法国", "美国"] fo.writelines(ls) fo.seek(0) for line in fo: print(line) fo.close()
#中国法国美国
一维数据的格式化和处理
>数据组织的维度
一维数据:由对等关系的有序或无序,采用线性方式组织
二维数据:由多个一维数据构成,是一维数据的组合形式
>一维数据的表示
如果数据间有序:使用列表类型
-for循环可以遍历数据,进而对每个数据进行处理
如果数据间无序:使用集合类型
-for。。。
>一维数据的存储
存储方式一: 空格分隔
中国 美国 日本 德国 法国 英国 意大利
-使用一个或多个空格分隔进行存储,不换行
-缺点:数据中不能存空格
存储方式二:逗号分隔
中国,美国,日本,德国,法国,英国,意大利
-使用英文半角逗号分割数据进行存储,不换行
-缺点:数据中不能有英文逗号
存储方式三:其他方式
中国$美国$日本$德国$法国$英国$意大利
-使用其他符号或符号组合隔离,建议采用特殊符号
-缺点:需要根据数据特点定义,通用性差
>一维数据的处理
txt=open(fname).read() ls=txt.split() f.close ls #['中国', '美国', '日本', '德国 ', '法国', '英国', '意大利']
txt=open(fname).read() ls=txt.split("$") f.close ls #['中国', '美国', '日本', '德国 ', '法国', '英国', '意大利']
采用空格分隔方式将数据写入文件
ls = ['中国', '美国', '日本'] f = open(fname, 'w') f.write(' '.join(ls)) f.close()
采用特殊分隔方式将数据写入文件
ls = ['中国', '美国', '日本'] f = open(fname, 'w') f.write('$'.join(ls)) f.close()
二维数据的格式化和处理
>二维数据的表示
>CSV数据存储格式
CSV: Comma-Separated Values
-国际通用的一二维数据存储格式,一般.csv扩展名
-每行一个一维数据,采用逗号分隔,无空行
-Excel和一般编译软件都可以读入或另存为CSV文件
-如果某个元素缺失,逗号仍要保留
-二维数据的表头可以作为数据存储,也可以另行存储
-逗号为英文半角逗号,逗号与数据之间无额外空格
>二维数据的存储
>二维数据的处理
二维数据的读入处理
从CSV格式文件中读入数据
fo =open(fname) ls=[] for line in fo: line = line.replace(" ","") ls.append(line.split(",")) fo.close()
二维数据的写入处理
将数据写入CSV格式文件
ls=[[],[],[]] #二维列表 f=open(fname,'w') for item in ls: f.write(','.join(item)+' ') f.close
二位数据的逐一处理
采用二层循环
ls=[[],[],[]] #二维列表 for row in ls: for column in row: print(ls[row][colum])
部分图片来自慕课https://www.icourse163.org/course/BIT-268001 若侵权请告知删除