一、文件
1、概念
何为文件?
文件是数据的抽象和集合
展现形态:文本文件和二进制文件
只是展现形式不同,本质上都是二进制形式存储
2、分类
文本文件:由单一特定字符编码组成的文件叫做文本文件,比如UTF-8编码
可以看成是存储的一个很长的字符串
适用于:.txt文件,以及.py的源文件
二进制文件:是直接由比特0和1组成的文件,没有统一的字符编码
存在一种0和1的组织格式
适用于:.png文件,.avi文件
3、两种文件类型的读取
文本文件读取和二进制文件读取之间的区别在于
文本文件读取方式为“rt”,二进制文件读取方式为“rb”
举个栗子^_^
比如同一文件夹下有个fighting.txt文件
虽然家里也能学习,但我好想回学校啊
以文本文件读取:
f = open("fighting.txt", "rt", encoding="utf-8") print(f.readline()) f.close()
读取结果:
虽然家里也能学习,但我好想回学校啊
以二进制文件读取:
f = open("fighting.txt", "rb") print(f.readline()) f.close()
读取结果:
b'\xef\xbb\xbf\xe8\x99\xbd\xe7\x84\xb6\xe5\xae\xb6\xe9\x87\x8c\xe4\xb9\x9f\xe8\x83\xbd\xe5\xad\xa6\xe4\xb9\xa0\xef\xbc\x8c\xe4\xbd\x86\xe6\x88\x91\xe5\xa5\xbd\xe6\x83\xb3\xe5\x9b\x9e\xe5\xad\xa6\xe6\xa0\xa1\xe5\x95\x8a'
小声bb个人认为rb的b就是二进制的bin的b
4、文件的打开和关闭
文件的打开:
<变量名> = open(<文件名>,<打开模式>)
文件变量我们称为文件句柄
文件名要加双引号,如果不在同一目录下那么需要写清路径
打开模式要看你是读还是写,文本文件读取还是二进制文件读取
注意一点!
python中\为转义字符,所以如果写路径那么要用其他方法
我们可以通过\\或者/来代替
文件的 打开模式 | 描述 |
' r ' | 只读模式,默认值,如果不存在返回异常 |
' w ' | 覆盖写模式,文件不存在则创建,存在则覆盖 |
' x ' | 创建写模式,文件不存在则创建,存在则返回异常 |
' a ' | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
' b ' | 二进制文件形式读取 |
' t ' | 文本文件形式读取,默认值 |
' + ' | 与r/w/x/a一起使用,增加同时读写功能 |
文件的关闭:<变量名>.close()
尽量别忘了写关闭文件的语句
5、文件的读取
<f>.read(size) | 读入全部内容,如果给出参数则读入前size长度 |
<f>.readline(size) | 读入一行内容,如果给出参数则读入该行前size长度 |
<f>.readlines(hint) | 读入文件所有行,返回每行为元素形成的列表 如果给出参数则读入前hint行 |
一般小体量文件可以用f.read()一次性读入
但大体量的需要按数量读入,逐步处理,比如while搭配f.read(4)
逐行操作可以用for line in f.readlines():或者直接for line in f:
6、数据写入文件
操作方法 | 描述 |
f.write(s) | 向文件中写入一个字符串或字节流 |
f.writelines(lines) | 将一个元素全为字符串的列表写入文件 只是把各元素拼接后写入文件 |
f.seek(op) | 改变当前文件光标的位置 0为文件开头,1为保持当前位置,2为文件结尾 |
要记得数据写入如果想打印出来那么一定要记得把光标挪到文件开头f.seek(0)!
二、数据格式化和处理
维度
数据的维度包括一维二维多维高维
表示
通常一维数据的表示用列表或集合
二维数据也是用列表,但列表中每个元素又是一个列表,这样的方式来完成二维数据的存储
处理方法
一维数据一般用字符串函数比如.split()或.replace()或.strip()以及.join()
二维数据一般要在for循环中使用字符串函数
f = open(filename,"r")
for line in f:
line = line.strip('\n') #去掉换行符
line = line.replace(' ', '') #去掉多余空格
ls = line.split(',') #获取数据
CSV格式
国际通用的一维二维存储格式
每行一个一维数据,采用逗号分隔,无空行,换行表示二维
Excel和一般编辑软件都可以读入或存储为csv文件
索引习惯:先行后列,即ls[row][column]