计算机二级python-第七章-文件和数据的格式化

时间:2021/09/04


1.文件的使用

  • 文件是存储在辅助存储器上的一组数据序列,可以包含任何数据内容。
  • 概念上,文件是数据的集合和抽象
    • 文本文件
    • 二进制文件

1.1 文件的类型

  • 文本文件一般有单一特定编码的字符组成,如UTF-8编码,方便内容统一展示和阅读
  • 由于文本文件存在编码,所以,可以被看作是存储在磁盘上的长字符串,如一个txt格式的文本文件(记事本)

  • 二进制文件直接由比特0和比特1组成,没有统一的字符编码,文件内部数据的组织格式与文件用途有关。
  • 二进制是信息按照非字符但有特定格式形式的文件,如png格式的图片文件、avi格式的视频文件。
  • 二进制文件和文本文件最主要的区别在于是否有统一的字符编码。
    二进制文件没有统一的字符编码,只能当作字节流,而不能看作是字符串。

  • 无论文件创建位文本文件或二进制文件,都可以用“文本文件方式”和“二进制文件方式”打开,但打开后的操作不同。

在这里插入图片描述

  • 以文本文件方式打开
file=open('a.txt','rt') # "t"表示以文本文件方式打开
print(file.readline())
file.close()

在这里插入图片描述

  • 以二进制方式打开
file=open('a.txt','rb') # b表示以二进制方式打开
print(file.readline())
file.close()

输出十六进制数

在这里插入图片描述

总结:

  • 采用文本方式读入文件,文件经过编码形成字符串,打印出有含义的字符。由于存在编码,字符串中的一个字符由多个字节(0和1)表示
  • 采用二进制方式打开文件,文件被解析为字节流。即特定的数字串

1.2 文件的打开和关闭

  • python对文本文件和二进制文件采用统一的操作步骤,即“打开-操作-关闭”
  • 操作系统中的文件默认处于存储状态,打开不存在的文件系统可以创建这个文件。
  • 打开后的文件处于占用状态,此时,另一个进程不能操作这个文件。
  • 可以通过一组方法读取文件的内容或向文件写入内容,操作之后需要将文件关闭,关闭将释放对文件的控制使用,文件恢复成存储状态

在这里插入图片描述

  • python通过open()函数打开一个文件,并返回一个操作这个文件的变量
  • 语法结构
变量名 = open(文件路径及文件名 , 打开模式)

open()函数有两个参数:

  • 文件名
    • 文件名可以是文件的实际名,也可以是包含完整路径的名字
  • 打开模式
    • 打开模式用于控制使用何种方式打开文件,open()函数提供了7种基本的打开模式。

  • 文件的打开模式:
打开模式含义
r只读模式,如果文件不存在,返回异常FileNotFoundError,默认值
w覆盖写模式,文件不存在则创建,存在则完全覆盖原文件
x创建写模式,文件不存在则创建,存在则返回异常FileExistsError
a追加写模式,文件不存在则创建,存在则在原文件最后追加内容
b二进制文件模式
t文本文件模式,默认值
+与r/w/x/a一同使用,在原功能基础上增加同时读写功能
  • 打开模式使用字符串方式表示,根据字符串定义,单引号或者双引号均可。
  • 上述打开模式中,r,w,x,a或以和b,t,+组合使用,形成既表达读写又表达文件模式的方式

打开文件有一些常用组合,如下:

  1. 以文本方式只读打开一个文件,读入后不能对文件进行修改
变量名 = open(文件名,'r')
变量名 = open(文件名)
  1. 以文本方式可读写地打开一个文件,可以读入并修改文件
变量名 = open(文件名,'r+')
  1. 以文本方式打开一个空文件,准备写入内容,并保存在新文件
变量名 = open(文件名,'w')
  1. 以文本方式打开一个空文件或已有文件,追加形式写入内容,更新原文件
变量名 = open(文件名,'a+')
  1. 以二进制方式只读打开一个文件,读入后不能对文件进行修改
变量名 = (文件名,'rb')
  1. 文件使用结束后要用close()方法关闭,释放文件的使用授权
变量名.close()

题目:
新建一个文本文件a.txt,其内容是“哈哈哈哈哈哈”,保存在目录PATH中,此时路径是E盘的python中的”课堂练习“。打开并关闭该文件的操作过程。
注: "\“是字符串中的转义字符,所以表示路径是,使用”\\“或”/"代替

# 定义文件路径
PATH='E:\\Python\\课堂练习\\'
# 文本打开方式
f=open(PATH+'A.txt','rt')
print(f.readline())
# 关闭文件
# 当文件关闭后,再对文件进行读取将产生I/O操作错误,即不能被读取
f.close()

在这里插入图片描述


注意文件的编码形式
记事本方式打开-文件-另存为

在这里插入图片描述


1.3 文件的读写

  • 根据打开方式不同,文件读写也会根据文本文件或二进制打开方式有所不同
方法含义
f.read(size=-1)从文件中读入整个文件内容。参数可选,如果给出,读入前size长度的字符串或字节流
f.readline(size=-1)从文件中读入一行内容。参数可选,如果给出,读入该行前size长度的字符串或字节流
f.readlines(hint=-1)从文件中读入所有行,以每行为元素形成一个列表。参数可选,如果给出,读入hint行
f.seek(offset)改变当前文件操作指针的位置,offset的值:0为文件开头;2为文件结尾
  • 如果文件以文本文件方式打开,则读入字符串;如果文件以二进制方式打开,则读入字节流。

题目:

如下是一个文件的内容,保存在bar.txt,存储路径是E盘的python中的”课堂练习“。对bar.txt文件的读入实例如下
”新年都未有芳华,二月初惊现草芽。
白雪却嫌春色晚,故穿庭树作飞花。“
在这里插入图片描述

解析:
如果文件不大,可以一次性将文件内容读入,保存在程序内部变量中。f.read()是最常用的一次性读入文件的函数,其结果是一个字符串。

# 路径 文件名
f=open('E:\\Python\\课堂练习\\bar.txt','r')
# 变量s保存读入内容
s=f.read()
print(s)
f.close()

在这里插入图片描述

f.readlines()也是一次性读入文件的函数,其结果是一个列表,每个元素是文件的一行

f=open('E:\\Python\\课堂练习\\bar.txt','r')
# 变量lst保存读入内容
lst=f.readlines()
print(lst)
f.close()

在这里插入图片描述


文件打开后,对文件的读写有一个读取指针,当从文件中读入内容后,读取指针将向前进,再次读取的内容将从指针的新位置开始。

f=open('E:\\Python\\课堂练习\\bar.txt','r')
# 变量s保存读入内容
s=f.read()
print(s)
print('-----------')
# 变量lst读取不到内容
lst=f.readlines()
print(lst)
f.close()

在这里插入图片描述

解析:

  • 因为之前发f.read()方法已经读取了文件全部内容,读取指针在文件末尾
  • 再次调用f.readlines()方法无法从当前读取指针处读取内容,因此返回结果为空

f.seek()方法能够移动读入指针的位置,f.seek(0)将读取指针移动到文件开头,f.seek(2)将读取指针移动到文件结尾。

f=open('E:\\Python\\课堂练习\\bar.txt','r')
# 变量s保存读入内容
s=f.read()
print(s)
print('-----------')
# 将读取指针移到开头
f.seek(0)
# 变量lst保存读入内容
lst=f.readlines()
print(lst)
f.close()

在这里插入图片描述


从文本文件中逐行读入内容,并进行处理是一个基本的文件操作需求。文本文件可以看作是由行组成的组合类型,因此,可以使用遍历循环行遍历文件。

  • 语法格式:
f=open(文件路径及名称,'r')
for line in f:
    print(line)
f.close()
f=open('E:\\Python\\课堂练习\\bar.txt','r')
for line in f:
    print(line)
f.close()

在这里插入图片描述


文件写入方法:

方法含义
f.write(s)向文件写入一个字符串或字节流
f.writelines(lines)将一个元素为字符串的列表整体写入文件

f.write(s)向文件写入字符串s,每次写入后,将会记录一个写入指针。该方法可以反复调用,在写入指针后分批写入内容,直到文件被关闭。

在这里插入图片描述

# 写模式打开一个文件
 f=open('E:\\Python\\课堂练习\\bar.txt','w')
 f.write('新年都未有芳华,\n')
 f.write('二月初惊现草芽。\n')
 f.write('白雪却嫌春色晚,\n')
 f.write('故穿庭树作飞花。\n')
 f.close()

在这里插入图片描述


f.writelines(lines)直接将列表类型的各元素连接起来写入文件f。

lst=['新年都未有芳华,','二月初惊现草芽。',\
     '白雪却嫌春色晚,','故穿庭树作飞花。']
# 写模式打开文件
f=open('E:\\Python\\课堂练习\\bar.txt','w')
# 调用写方法
f.writelines(lst)
f.close()

在这里插入图片描述

2.数据组织的维度

一组数据在被计算机处理前需要进行一定的组织,表明数据之间的基本关系和逻辑,进而形成数据“数据的维度”。

  • 一维数据
  • 二维数据
  • 高维数据

2.1 一维数据

  • 由对等关系的有序或无序数据构成,采用线性方式组织,对应于数学中数组的概念。
  • 一维数据具有线性特点,任何表现为序列或集合的内容都可以看作是一维数据。

2.2 二维数据

  • 也称表格数据,由关联关系数据构成,采用二维表格方式组织,对应于数学中的矩阵,常见的表格都属于二维数据。

在这里插入图片描述


2.3 高维数据

  • 由键值对类型的数据构成,采用对象方式组织,可以多层嵌套。
  • 高维数据相比一维数据和二维数据能表达更加灵活和复杂的数据关系

在这里插入图片描述


3.一维数据的处理

3.1 一维数据的表示

  • 一维数据是最简单的数据组织类型,由于是线性结构,在python中主要采用列表形式表示。
  • 采用列表类型表示一维数据的时候,需要注意每个数据的数据类型。

一维数据的文件存储有多种方式,总体思路是采用特殊字符分隔各数据。

  1. 采用空格分隔元素,
    北京 上海 天津 重庆
  2. 采用逗号分隔元素,
    北京,上海,天津,重庆
  3. 使用换行分隔元素,
    北京
    上海
    天津
    重庆
  4. 其他特殊符号分隔,
    北京:上海:天津:重庆

这4中方法中,逗号分隔的存储格式叫CSV格式(Comma-Separated Values,即逗号分隔值),它是一种通用,相对简单的文件格式。

  • 存储的文件一般采用.csv为扩展名

列表对象输出为CSV格式文件方法如下,采用字符串的join()方法

lst=['北京','上海','天津','重庆']
f=open('E:\\Python\\课堂练习\\acity.csv','w')
f.write(','.join(lst)+'\n')
f.close()

在这里插入图片描述


3.2 一维数据的处理

  • 对一维数据进行处理,首先需要从CSV格式文件读入一堆数据,并将其表示为列表对象。
  • 从CSV文件中获取内容时,最后一个元素后面包含了一个换行符("\n")
  • 对于数据的表达和使用来说,这个换行是多余的,需要采用字符串的strip()方法去掉数据尾部的换行符,进一步使用split()方法以逗号进行分隔。
f=open('E:\\Python\\课堂练习\\acity.csv','r')
lst=f.read()
print(lst)
# 读取到的是一个字符串类型
print(type(lst))
f.seek(0)
lst=f.read().strip('\n').split(',')
print(lst)
# 读取到的是一个列表类型
print(type(lst))
f.close()

在这里插入图片描述


4.二维数据的处理

4.1 二维数据的表示

  • 二维数据由多个一维数据构成,可以看作是一维数据的组合形式。
  • 二维数据可以采用二维列表来表示,即列表的每个元素对应二维数据的一行,这个元素本身也是列表类型

在这里插入图片描述

提示:

  • 二维数据的数据类型一般采用相同的数据类型存储数据,便于操作。
  • 尽管在二维数据中存在大量数值,但由于本例中数值坐在行或列不都是数字,存在字符文本,因此,将数值统一表示为字符串形式

4.2 二维数据的存储

  • 二维数据由以为数据组成,用CSV格式文件存储
  • CSV文件的每一行是一维数据,整个CSV文件是一个二维数据。
  • 二维列表对象输出为CSV格式文件方法如下
lst=[
        ['指标','2021年','2021年','2019年'],
        ['居民消费价格指数','164','131.5','665'],
        ['食品','13.2','563.2','894.5']
    ]
# 写方式打开文件
f=open('E:\\Python\\课堂练习\\api.csv','w')
# for遍历循环写入
for row in lst:
    f.write(','.join(row)+'\n')
f.close()

在这里插入图片描述


4.3 二维数据的处理

  • 对二维数据进行处理,首先需要从CSV格式文件读入二维数据,并将其表示位二维列表对象。
f=open('E:\\Python\\课堂练习\\api.csv','r')
lst=[]
for line in f:
    lst.append(line.strip('\n').split(','))
f.close()
print(lst)

在这里插入图片描述

  • 二维数据处理等同于二维列表的操作。
  • 于一维列表不同,二维列表一般需要借助循环遍历实现对每个数据的处理。
  • 语法结构
for row in lst:
    for item in row:
        对第row行第item列元素进行处理
f=open('E:\\Python\\课堂练习\\api.csv','r')
lst=[]
for line in f:
    lst.append(line.strip('\n').split(','))
f.close()
for row in lst:
    line=''
    for item in row:
        line+='{:10}\t'.format(item)
    print(line)

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Python数据分析(第2版)》是由Wes McKinney著写的一本关于使用Python进行数据分析的书籍,第2版是其中文版本。这本书通过Python语言提供了一种简单、灵活、高效的方式来处理和分析数据。它主要涵盖了数据清洗、数据处理、数据可视化以及数据分析等方面的内容。 这本书的内容主要分为四个部分,分别是“准备工作”、“pandas库入门”、“数据规整化”和“数据分析”的章节。 在“准备工作”部分,作者介绍了Python数据分析的环境设置,包括安装Python和相关的库(如NumPy和pandas)以及说明如何执行示例代码。 “pandas库入门”一章介绍了pandas库的基本概念和常用操作,以及如何读取和处理各种数据格式。 “数据规整化”一章讨论了数据清洗和转换的技术,包括处理缺失值、重复数据以及重新组织数据等内容。 “数据分析”一章是这本书的核心部分,它介绍了如何使用Python进行数据分析,包括数据聚合、分组和透视等常用的数据分析方法。 这本书中通过许多实例和示例代码来演示如何使用Python进行数据分析,帮助读者理解和掌握数据分析的基本方法和技巧。它适合那些对数据分析感兴趣的读者,无论是初学者还是有一定经验的数据分析师。 总的来说,《Python数据分析(第2版)》是一本权威的、实用的关于使用Python进行数据分析的指南,它能够帮助读者快速入门并掌握数据分析的技巧。 ### 回答2: 《Python数据分析(第2版)中文版》是一本介绍使用Python进行数据分析的书籍。该书由Wes McKinney撰写,是第一本详细介绍使用Python进行数据分析的专业书籍。 这本书主要分为8个部分,涵盖了数据分析的基本概念、数据处理、数据可视化、时间序列分析等内容。第一部分介绍了数据分析的基本知识和工具,包括NumPy、Pandas和IPython等库和工具的使用。第二部分介绍了数据的处理和清洗,包括缺失数据的处理、数据合并和重塑等操作。第三部分重点介绍了数据的可视化,包括Matplotlib和Seaborn库的使用,可以帮助读者展示和分析数据。第四部分介绍了数据聚合和分组的方法,包括使用GroupBy、重塑和数据转换等技术。第五部分涵盖了时间序列数据的处理和分析。第六部分介绍了面板数据的处理。第七部分介绍了更高级的数据分析技术,包括移动窗口函数和爬虫技术等。第八部分介绍了常见的数据分析案例,通过实际的案例帮助读者理解和应用所学知识。 《Python数据分析(第2版)中文版》旨在帮助读者使用Python进行数据分析,提供了丰富的工具和案例,可以帮助读者掌握数据分析的基本技巧和方法。此外,该书还提供了在线的资源和教学视频,方便读者进一步学习和应用所学知识。 总之,《Python数据分析(第2版)中文版》是一本内容丰富、实用性强的书籍,对于想要学习和应用Python进行数据分析的读者来说是一本不可多得的工具书。 ### 回答3: 《Python 数据分析》(第二版)是一本讲述使用Python进行数据分析的书籍,由美国著名数据科学家Wes McKinney撰写。该书是McKinney首次出版的同名书籍的中文版,内容涵盖了一系列数据分析常用的Python工具和技术。 《Python 数据分析》(第二版)首先介绍了NumPy和Pandas两个Python数据分析库的基本用法。NumPy是一个强大的数值计算库,能够高效地处理大型数据集,而Pandas是一个建立在NumPy之上的数据分析工具,提供了更高级的数据结构和数据处理功能。 接着,该书讲解了如何使用Pandas进行数据清洗、变形和处理。Pandas提供了DataFrame和Series等数据结构,能够方便地对数据进行处理和操作。读者可以学习如何加载数据、处理缺失值、去重、切片、过滤、合并等操作。 书中还介绍了数据分析中常用的统计分析和可视化工具。读者可以学习如何使用Pandas和Matplotlib库进行数据的统计分析和可视化展示,包括生成各种图表和绘制统计图。 此外,《Python 数据分析》(第二版)还介绍了使用Pandas进行时间序列分析、数据聚合和加工等高级数据处理技术。读者可以学习如何处理时间序列数据、使用分组和聚合函数进行数据分析等。 总体来说,《Python 数据分析》(第二版)是一本很好的Python数据分析入门教程,适合对数据分析感兴趣的初学者。通过学习这本书,读者可以掌握使用Python进行数据分析的基本技能,并能够在实际项目中应用所学知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值