文件和数据格式化


一、文件的使用

1.熟悉文件的类型
2.熟悉文件的打开和关闭
3.熟悉内容的读取
4.数据文件的写入

文件类型

  • 文件是数据的抽象和集合

    • 文件展现形态:文本文件和二进制文件

    • 文本文件和二进制文件只是文件的展示方式

    • ​本质上,所有文件都是二进制形式存储

文本文件二进制文件
1.由单一特定编码组成的文件,如UTF-81.直接由比特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()打开文件时,只要文件路径正确总可以打开


答案

  1. A 列表的索引值从0开始
  2. A open()打开文件,文件内容需要读取才会载入内存
  3. C 文件读写的时候 strip()方法可以剔除空格;join()方法连接内容;split()方法以什么分隔;唯有index()方法用不到。
  4. C 表格数据组织维度最靠近二维数据
  5. C 列表的嵌套能表示二维数据
  6. B socket() 套接字方法 用于信息传递
  7. A “t”表示以txt文件打开 而“b”以二进制打开文件
  8. B 字典是高维数据;列表存储无需一致元素;一维列表有多个一维列表,这个列表是二维数据
  9. A csv文件以英文逗号分隔元素
  10. B 字典类型属于高维数据。
  11. D 文件的追加写入模式是a
  12. C 二维数据的读取,用二重for循环实现
  13. A 根据题意可以得出 a.txt里写入一个“hello"字符串,显示”hello“字符串
  14. A 将二维数据写入CSV文件,用join()方法
  15. D 一维数据由对等关系的有序和无序构成;高维数据键值对构成;csv是二维数据。
  16. C seek()方法是定位到初使位置,tell()方法是返回文件指针的当前位置。
  17. D 无序数据也是一维数据。
  18. B 二进制文件可以用记事本打开;文件存在则覆盖写;文件不存在无法打开。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值