Python二级(09)——文件和数据格式化「建议收藏」

Python二级(09)——文件和数据格式化「建议收藏」>>上一篇《Python二级——组合数据类型》一、知识导图二、文件的使用1、文件I、文件是存储在辅助存储器上的一组数据序列,可以包含

欢迎大家来到IT世界,在知识的湖畔探索吧!

Python二级(09)——文件和数据格式化「建议收藏」

>>上一篇《Python二级(08)——组合数据类型》

一、知识导图

Python二级(09)——文件和数据格式化「建议收藏」

二、文件的使用

1、文件

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

2、文件的类型

I、文本文件一般由单一特定编码的字符组成,如 UTF-8编码,内容容易统一展示和阅读。

II、二进制文件直接由比特0和比特1组成,文件内部数据的组织格式与文件用途有关。二进制是信息按照非字符但特定格式形成的文件,例如,png 格式的图片文件、avi格式的视频文件。

III、二进制文件和文本文件最主要的区别在于是否有统一的字符编码

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

f = open("a.txt","rt") # t表示文本文件格式
print(f.readline())
f.close()

欢迎大家来到IT世界,在知识的湖畔探索吧!

V、文本文件a.txt,采用二进制方式打开

欢迎大家来到IT世界,在知识的湖畔探索吧!f = open("a.txt","rb") # b表示二进制文件格式
print(f.readline())
f.close()

VI、采用文本方式读入文件,文件经过编码形式字符串,打印出有含义的字符;采用二进制方式打开文件,文件被解析为字节流。

3、文件的打开和关闭

I、Python对文本文件和二进制文件采用统一的操 作步骤,即“打开-操作-关闭”

Python二级(09)——文件和数据格式化「建议收藏」

II、Python通过open()函数打开一个文件,并返回一 个操作这个文件的变量,语法形式如下:

<变量名> = open(<文件路径及文件名>,<打开模式>)

Python二级(09)——文件和数据格式化「建议收藏」

III、打开模式使用字符串方式表示,根据字符串定义, 单引号或者双引号均可。上述打开模式中,’r’、 ‘w’、’x’、’b’可以和’b’、’t’、’+’组合使用,形成既 表达读写又表达文件模式的方式。

IV、文件使用结束后要用close()方法关闭,释放文件 的使用授权,语法形式如下:

<变量名>.close()

V、新建一个文本文件a.txt,其内容为“全国计算机等级考 试”,保存在目录PATH中,假设此时路径PATH是 Windows系统的D盘根目录。打开并关闭该文件的操作 过程如下。

>>>PATH = "D:\\"
>>>f = open(PATH + "a.txt", "rt")
>>>print(f.readline())
国家计算机等级考试
>>>f.close()

VI、根据打开方式不同,文件读写也会根据文本文件 或二进制打开方式有所不同。

Python二级(09)——文件和数据格式化「建议收藏」

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

欢迎大家来到IT世界,在知识的湖畔探索吧!>>>f = open("D://b.txt", "r")
>>>s = f.read()
>>>print(s)
新年都未有芳华,二月初惊见草芽。
白雪却嫌春色晚,故穿庭树作飞花。
>>>f.close()

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

>>>f = open("D://b.txt", "r")
>>>ls = f.readlines()
>>>print(ls)
['新年都未有芳华,二月初惊见草芽。\n', '白雪却嫌春色晚,故穿 庭树作飞花。\n']
>>>f.close()

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

>>>f = open("D://b.txt", "r")
>>>s = f.read()
>>>print(s)
新年都未有芳华,二月初惊见草芽。 
白雪却嫌春色晚,故穿庭树作飞花。
>>>ls = f.readlines() 
>>>print(ls)
[]
>>>f.close()

结合读取指针理解,上述代码中ls返回值为空, 因为之前f.read()方法已经读取了文件全部内容, 读取指针在文件末尾,再次调用f.readlines()方 法已经无法从当前读取指针读入内容,因此返回 结果为空。

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

>>>f = open("D://b.txt", "r")
>>>s = f.read()
>>>print(s)
新年都未有芳华,二月初惊见草芽。 
白雪却嫌春色晚,故穿庭树作飞花。
>>>f.seek(0) # 将读取指针重置到文件开头
>>>ls = f.readlines()
>>>print(ls)
['新年都未有芳华,二月初惊见草芽。\n', '白雪却嫌春色晚,故穿庭树作飞花。\n'] 
>>>f.close()

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

Python二级(09)——文件和数据格式化「建议收藏」

Python二级(09)——文件和数据格式化「建议收藏」

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

>>>f = open("D://c.txt", "w") 
>>>f.write('新年都未有芳华\n') 
>>>f.write('二月初惊见草芽\n') 
>>>f.write('白雪却嫌春色晚\n') 
>>>f.write('故穿庭树作飞花\n') 
>>>f.close()

上述语句运行后将在D盘目录下生成一个文件c.txt,内 容如下

新年都未有芳华
二月初惊见草芽
白雪却嫌春色晚
故穿庭树作飞花

使用f.write(s)时,要显式的使用’\n’对写入文本进行分 行,如果不进行分行,每次写入的字符串会被连接起来。

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

>>>ls = ['新年都未有芳华\n', '二月初惊见草芽\n','白雪却嫌春色晚 \n','故穿庭树作飞花\n']
>>>f = open("D://c.txt", "w")
>>>f.writelines(ls)
>>>f.close()
Python二级(09)——文件和数据格式化「建议收藏」

三、数据组织的维度

1、数据组织的维度

一组数据在被计算机处理前需要进行一定的组织, 表明数据之间的基本关系和逻辑,进而形成“数 据的维度”。根据数据的关系不同,数据组织可 以分为:一维数据、二维数据和高维数据。

2、一维数据

一维数据由对等关系的有序或无序数据构成,采用线性方式组织,对应于数学中数组的概念。例 如:中国的直辖市列表即可表示为一维数据,一 维数据具有线性特点。

Python二级(09)——文件和数据格式化「建议收藏」

3、二维数据

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

II、例如:国家统计局发布的居民消费价格指数是二 维数据

Python二级(09)——文件和数据格式化「建议收藏」

4、高维数据

I、高维数据由键值对类型的数据构成,采用对象方式组织,可以多层嵌套。

II、高维数据在Web系统中十分常用,作为当今 Internet组织内容的主要方式,高位数据衍生出 HTML、XML、JSON等具体数据组织的语法结 构。

Python二级(09)——文件和数据格式化「建议收藏」

四、一维数据的处理

1、 一维数据的表示

I、一维数据是最简单的数据组织类型,由于是线性结构,在Python语言中主要采用列表形式表示。 例如:中国的直辖市数据可以采用一个列表变量 表示。

>>>ls = ['北京', '上海', '天津', '重庆'] 
>>>print(ls)
['北京', '上海', '天津', '重庆']

2、 一维数据的存储

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

(1)采用空格分隔元素,例如:

北京 上海 天津 重庆

(2)采用逗号分隔元素,例如:

北京,上海,天津,重庆

(3)采用换行分隔包括,例如:

北京

上海

天津

重庆

(4)其他特殊符号分隔,以分号分隔为例,例 如:

北京;上海;天津;重庆

II、逗号分割的存储格式叫做CSV格式(Comma-Separated Values,即逗号分隔值),它是一种通用的、相对简单 的文件格式,在商业和科学上广泛应用,大部分编辑器 都支持直接读入或保存文件为CSV格式

III、一维数据保存成CSV格式后,各元素采用逗号分隔,形 成一行。从Python表示到数据存储,需要将列表对象输 出为CSV格式以及将CSV格式读入成列表对象

ls = ['北京', '上海', '天津', '重庆'] 
f = open("city.csv", "w")
f.write(",".join(ls)+ "\n")
f.close()

Python二级(09)——文件和数据格式化「建议收藏」

3、 一维数据的处理

I、对一维数据进行处理首先需要从CSV格式文件读 入一维数据,并将其表示为列表对象。f = open("city.csv", "r")
ls = f.read().strip('\n').split(",") 
f.close()
print(ls)
>>>
['北京', '上海', '天津', '重庆']

4、 二维数据的处理

二维数据由多条一维数据构成,可以看成是一维数据的组合形式。因此,二维数据可以采用二维 列表来表示,即列表的每个元素对应二维数据的一行,这个元素本身也是列表类型,其内部各元素对应这行中的各列值

ls = [
['指标', '2014年', '2015年', '2016年'],
['居民消费价格指数', '102', '101.4', '102'],
['食品', '103.1', '102.3', '104.6'],
['烟酒及用品', '994', '102.1', '101.5'],
['衣着', '102.4', '102.7', '101.4'],
['家庭设备用品', '101.2', '101', '100.5'],
['医疗保健和个人用品', '101.3', '102', '101.1'],
['交通和通信', '99.9', '98.3', '98.7'],
['娱乐教育文化', '101.9', '101.4', '101.6'],
['居住', '102', '100.7', '101.6'], ]

5、 二维数据的存储

I、二维数据由一维数据组成,用CSV格式文件存储。 CSV文件的每一行是一维数据,整个CSV文件是 一个二维数据。

II、二维列表对象输出为CSV格式文件方法如下,采 用遍历循环和字符串的join()方法相结合。

# ls代表二维列表,此处省略 
f = open("cpi.csv", "w") 
for row in ls:
 f.write(",".join(row)+ "\n")
f.close()

6、 二维数据的处理

对二维数据进行处理首先需要从CSV格式文件读 入二维数据,并将其表示为二维列表对象。借鉴 一维数据读取方法,从CSV文件读入数据的方法 如下。

f = open("cpi.csv", "r")
ls=[]
for line in f:
 ls.append(line.strip('\n').split(","))
f.close()
print(ls)

程序执行后二维列表对象ls的内容如下。

>>>
[['指标', '2014年', '2015年', '2016年'], ['居民消费价格指数 ', '102', '101.4', '102'], ['食品', '103.1', '102.3', '104.6'], ['烟酒及用品', '994', '102.1', '101.5'], ['衣着 ', '102.4', '102.7', '101.4'], ['家庭设备用品', '101.2', '101', '100.5'], ['医疗保健和个人用品', '101.3', '102', '101.1'], ['交通和通信', '99.9', '98.3', '98.7'], ['娱乐教 育文化', '101.9', '101.4', '101.6'], ['居住', '102', '100.7', '101.6']]

二维数据处理等同于二维列表的操作,与一维列表不同,二维列表一般需要借助循环遍历实现对每个数据的处理,基本代码格式如下:

Python二级(09)——文件和数据格式化「建议收藏」

对二维数据进行格式化输出,打印成表格形状

Python二级(09)——文件和数据格式化「建议收藏」

交流

如果你有更好的解法或者有不同的意见,大家可以畅所欲言,共同提高进步!

群主也是小白一枚,零基础学习python,要勇于提问,大家共同探讨,共同学习进步!

日日行,不怕千万里;常常做,不怕千万事。

Python二级(09)——文件和数据格式化「建议收藏」

>>下一篇《Python二级(11)——Python标准库概览》

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/23014.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信