一、文件的使用
1.熟悉文件的类型
2.熟悉文件的打开和关闭
3.熟悉内容的读取
4.数据文件的写入
文件类型
-
文件是数据的抽象和集合
-
文件展现形态:文本文件和二进制文件
-
文本文件和二进制文件只是文件的展示方式
-
本质上,所有文件都是二进制形式存储
-
文本文件 | 二进制文件 |
---|---|
1.由单一特定编码组成的文件,如UTF-8 | 1.直接由比特0和1组成,没有统一字符编码 |
2.由于存在编码,也被看做存储着的长字符串 | 2.一般存在二进制0和1的组织结构,即文件格式 |
3.如.txt .py文件 | 3.适用于 .png .avi文件 |
f=open('test','rt',encoding='utf-8')
text=f.read()
print(text)
f.close()
>>>
this is test
f=open('image.png','rb')
rb=f.read()
print(rb)
f.close()
>>>
5\x8e\xc5\x87\x95_\x99\xd7HeT\xc69\xb5\xcf\xa3\xcdc\xd6\xe2\xd4\xf7Q%\xac+\x9f5L\xc6\x07\xbfS_o]\xbfW~?\x1e\xfc\x99\xdb\xa9\xc4\xa9\x95u\xa9|\xd6\xad:\x95u\xd1e\x9e\xac\xfboS[N\x16\x8cN$_\xceA\xe2G\xceX\xd2........
文件的打开和关闭
文件处理步骤:打开-操作-关闭
#文件的打开
"""
<变量名>=open(<文件名>,<打开模式>)
"""
#文件关闭
#<变量命>.close()
文件打开模式 | 描述 |
---|---|
‘r’ | 只读模式,默认值,如果文件不存在,返回FileNotFoundError |
’w‘ | 覆盖写,文件不存在则创建,存在则完全覆盖 |
‘x’ | 创建写,文件不存在则创建,存在则返回FileExistError |
’a’ | 追加写,文件不存在则创建,存在则在文件最后追加 |
’b‘ | 二进制文件模式 |
’t‘ | 文本文件模式,默认值 |
’+‘ | 与r/w/x/a一同使用,在原功能基础上增加同时读写功能 |
文件内容读取
操作方法 | 描述 |
---|---|
.read(size=-1) | 读取所有内容,如果给出参数,读取前size长度 |
.readline(size=-1) | 读取一行内容,如果给出参数,读取改行前size长度 |
.readlines(hint=-1) | 读取文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行 |
数据的文件写入
操作方法 | 描述 |
---|---|
.write(s) | 向文件写入一个字符串或字节流 |
.writelines(lines) | 将一个元素全为字符串的列表写入文件 |
.seek(offset) | 改变当前文件操作指针的位置,0-文件开头,1-当前位置,2文件结尾 |
二、数据格式化和使用
1.熟悉数据组织的维度
2.熟悉一维数据表示、存储、处理
3.熟悉二维数据表示、存储、处理
数据组织的维度
- 一维数据:由对等关系的有序或无序数据构成,采用线性方式【列表、数组和集合等】
- 二维数据:由多个一维数据构成,是一维数据的组合形式【表格】
- 多维数据:由一维或二维数据在新维度上的扩展形成
- 高维数据:仅利用最基本的二元关系展示数据间的复杂关系【键值对】
- 数据的操作周期 存储<->表示<->操作
一维数据
1.表示
- 如果数据有序:使用列表类型
- 如果数据无序:使用集合类型
2.存储
- 方式一:空格分隔 优点:使用一个或多个空格分隔进行存储不换行 缺点:数据之间不能存在空格
- 方式二:逗号分隔 优点:使用英文半角逗号分隔数据进行存储,不换行 缺点:数据中不能有英文逗号
- 方式三:其它方式
3.处理
从空格分隔的文件中读入数据
从特殊符号分隔的文件读入数据
#python java c c++
txt=open(fname).read()
ls=txt.split()#特殊字符替换
f.close()
#
>>>print(ls)
['python','java','c','c++']
采用空格分隔方式将数据写入文件
采用特殊分隔方式将数据写入文件
ls=['python','c','java','go']
f=open(fname,'w')
f.write(' '.join(ls))
f.close()
二维数据
1.表示
使用列表类型(二维列表)两层for循环遍历每个元素
2.处理
从csv格式的文件读入数据;将数据写入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 low in ls:
for column in row:
print(cloum)
CSV数据存储格式
- 国际通用的一二维数据存储格式,一般.csv扩展名
- 每行一个一维数据,采用逗号分隔,无空格
- 如果某个元素缺少,逗号仍要保留
- 一般索引习惯ls【low】【Column】先行后列
习题巩固
1.下面关于数据维度的描述,错误的是()
A 列表的索引值大于0小于列表长度的整数
B JSON格式可以表示比二维数据还复杂的高维数据
C 二维数据可以看成多条一维数据的组合类型
D csv文件既能保存一维数据,也能保存二维数据
2.以下关于文件的描述,错误的是()
A open()打开一个文件,同时把文件内容载入内存
B open()打开文件后,返回一个对象,用于后续的文件读写操作
C 当文件以二进制方式打开的时候,是按字节流方式读写
Dwrite(x) 函数要求x必须是字符串类型,不能是int类型
3.在进行CSV文件读写时,最不可能使用的字符传处理的方法是()
A strip()
B join()
C index()
D split()
4.表格类型数据组织维度最可能的是()
A 多维数据
B 一维数据
C 二维数据
D 高维数据
5.以下关于数据组织的维度,以下选项中描述错误的是()
A JSON格式能够表达一维数据
B 字典类型可以表达具有复杂关系的高维数据
C 列表只能表示一维数据
D CSV文件可以用来存储二维数据
6.方法不是Python文件操作的选项是()
A seek()
B socket()
C close()
D readlines()
7.以下关于文件描述错误的是()
A open()函数的打开模式 “t”表示以二进制打开文件
B 打开文件时,编码方式是可选参数
C f0.seek() 是设置当前文件操作指针的位置
D open函数的打卡模式 ‘a’ 表示可以对文件进行追加操作
8.关于数据维度的描述,正确的是()
A 一维数据可以用列表表示,也可以用字典表示
B JSON 格式可以表示具有复杂关系的高维数据
C 采用列表表示一维数据,各个元素必须相同
D 一维的列表a里的某个元素是一个一维的列表b,这个列表是二维数据
9.以下对CSV格式描述正确的是()
A csv文件以英文逗号分隔元素
B csv文件以英文空格分隔元素
C csv文件以英文分号分隔元素
D csv文件以英文特殊符号分隔元素
10.表达键值对的字典类型最可能属于数据组织维度是()
A 一维数据
B高维数据
C二维数据
D多维数据
11.文件的追加写入模式是()
A +
B r
C x
D a
12.关于数据维度的描述,不正确的是()
A 二维数据处理等同于二维列表的操作
B要处理二维数据的每个元素,需要用循环结构处理
C二维数据用CSV文件格式存储,得用二重循环嵌套实现
D CSV文件里用英文半角逗号来分隔数据元素
13.以下语句的执行结果()
with open('a.txt','w+') as fo:
fo.write("hello")
fo.seek(0)
print(fo.read())
A 写到文件a.txt 里一个”hello“字符串,显示在屏幕上一个”hello“
字符串
B 写到文件a.txt里的一个“hello”字符串
C 出现读写异常
D 读文件的函数没有从文件里读到字符串
14.在Python语言中,将二维数据写入CSV文件,最可能使用的函数是()
A join()
B split()
C strip()
D exists()
15.关于数据组织的维度描述正确的是()
A 二维数据由对等关系的有序或无序数据构成
B高维数据由关联关系数据构成
Ccsv是一维数据
D 一维数据采用线性方式存储
16.关于文件读写的描述中,错误的是()
A 对文件进行读写操作之后必须关闭文件以防止文件丢失
B 以追加模式打开的文件,文件存在则在原文件最后追加内容,不存在则创建
C 文件对象的seek()方法用来返回文件指针的当前位置
D 文件对象的readlines()方法用来读取文件中的所有行,以每个元素形成一个列表
17.关于数据维度的描述,错误的是()
A 一维数据由对等关系的有序或无序数据构成,采用线性方式组织,对应数学中的集合或数组的概念
B 二维数据由关联关系构成,采用表格方式组织,对应数学中的矩阵
C 高维数据由键值对类型的数据组成,采用对象方式组织
D 一维数据是由对等关系的有序数据构成,无序数据不是一维数据
18.关于文件的打开和关闭的描述中,正确的是()
A 二进制文件不能使用记事本程序打开
B 二进制文件也可以使用记事本打开或其它文本编辑器打开,但是一般来说无法正常查看其中的内容
C 使用内置函数open()且以w模式打开文件,若文件存在,则会引发异常
D 使用内置函数open()打开文件时,只要文件路径正确总可以打开
答案
- A 列表的索引值从0开始
- A open()打开文件,文件内容需要读取才会载入内存
- C 文件读写的时候 strip()方法可以剔除空格;join()方法连接内容;split()方法以什么分隔;唯有index()方法用不到。
- C 表格数据组织维度最靠近二维数据
- C 列表的嵌套能表示二维数据
- B socket() 套接字方法 用于信息传递
- A “t”表示以txt文件打开 而“b”以二进制打开文件
- B 字典是高维数据;列表存储无需一致元素;一维列表有多个一维列表,这个列表是二维数据
- A csv文件以英文逗号分隔元素
- B 字典类型属于高维数据。
- D 文件的追加写入模式是a
- C 二维数据的读取,用二重for循环实现
- A 根据题意可以得出 a.txt里写入一个“hello"字符串,显示”hello“字符串
- A 将二维数据写入CSV文件,用join()方法
- D 一维数据由对等关系的有序和无序构成;高维数据键值对构成;csv是二维数据。
- C seek()方法是定位到初使位置,tell()方法是返回文件指针的当前位置。
- D 无序数据也是一维数据。
- B 二进制文件可以用记事本打开;文件存在则覆盖写;文件不存在无法打开。