全国计算机等级考试二级教程--python语言程序设计(2018年版)第七章:数据组织的维度

版权声明: https://blog.csdn.net/qq_38351824/article/details/86179889

声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。

作者:sumjess

 

一、文件的使用:

1、文件的类型:

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

      一个文本文件a.txt,其内容为“全国计算机二级---Sumjess”,采用文本方式打开。这里需要将文本文件与python程序文件放在同一个目录中。

f = open("a.txt","rt")
print(f.readline())
f.close()

     一个文本文件a.txt,其内容为“全国计算机二级---Sumjess”,采用二进制方式打开

f = open("a.txt","rb")
print(f.readline())
f.close()

     其中\xc8是十六进制数,代表字节11001000。

     采用文本方式读入文件,文件经过编码形成字符串,打印出有含义的字符;采用二进制方式打开文件,文件被解释为字节流。由于存在编码,字符串中的一个字符由多个字节表示

2、文件的打开和关闭:

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

     相关函数介绍:

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

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

      

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

          以文本方式只读打开一个文件,读入后不能对文件进行修改

          <变量名> = open(<文件名>,‘r’)   或   <变量名>open(<文件名>)

          以文本方式可读写地打开一个文件,可以读入并修改文件

          <变量名> = open(<文件名>,‘r+’)   

          以文本方式打开一个空文件,准备写入一些内容,并保存为新文件

          <变量名> = open(<文件名>,‘w’)   

          以文本方式打开一个空文件或已有文件追加形式写入一些内容,更新原文件

          <变量名> = open(<文件名>,‘a+’)   

          以二进制方式只读打开一个文件,读入后不能对文件进行修改

          <变量名> = open(<文件名>,‘rb’)   

       (2)<变量名> . close()

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

例子:

当文件关闭后,再对文件进行读写将产生I/O操作错误。

 

3、文件的读写:

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

       Python语言常用的文件读取方式,以f代表文件变量。

如果文件不大,可以一次性将文件内容读入,

 

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


'''(需要注意,由于“\”是字符串中的转义符,所以表示路径时,使用“\\”或“/”代替“\”)'''

f = open("D:\\a.txt","r")
s = f.read()
print(s)

f.close()

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

'''(需要注意,由于“\”是字符串中的转义符,所以表示路径时,使用“\\”或“/”代替“\”)'''

f = open("D:\\a.txt","r")
s = f.readlines()
print(s)

f.close()

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


'''(需要注意,由于“\”是字符串中的转义符,所以表示路径时,使用“\\”或“/”代替“\”)'''

f = open("D:\\a.txt","r")

qs = f.read()
print(qs)

s = f.readlines()
print(s)

f.close()

 

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

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


'''(需要注意,由于“\”是字符串中的转义符,所以表示路径时,使用“\\”或“/”代替“\”)'''

f = open("D:\\a.txt","r")

qs = f.read()
print(qs)

f.seek(0)

s = f.readlines()
print(s)

f.close()

 

 

写入方法:

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

'''(需要注意,由于“\”是字符串中的转义符,所以表示路径时,使用“\\”或“/”代替“\”)'''

f = open("D:\\a.txt","w")

f.write('Sumjess\n')
f.write('计算机二级\n')
f.write('一直在换行\n')
f.write('23333...\n')
f.close()

 

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

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


'''(需要注意,由于“\”是字符串中的转义符,所以表示路径时,使用“\\”或“/”代替“\”)'''

f = open("D:\\a.txt","w")

q=['Sumjess\n','计算机二级\n','一直在换行\n','55555...\n']

f.writelines(q)

f.close()

上述语句运行后将在D盘目录下覆盖生成文件a.txt,与之前内容相同。


'''(需要注意,由于“\”是字符串中的转义符,所以表示路径时,使用“\\”或“/”代替“\”)'''

f = open("D:\\a.txt","w")

q=['Sumjess','计算机二级','一直在换行','55555...']

f.writelines(q)

f.close()

 

二、数据组织的维度:

 

1、一维数据:

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

2、二维数据:

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

3、高维数据:

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

 

三、一维数据的处理:

 

1、一维数据的表示:

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

2、一维数据的存储:

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

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

北京 上海 天津 重庆

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

北京,上海,天津,重庆

    (3)采用换行分隔元素,例如:

北京
上海
天津
重庆

    (4)采用其他特殊符号元素,例如:

北京;上海;天津;重庆

       这4种方法中,逗号分隔的存储格式叫作CSV格式,即逗号分隔最通用的。存储的文件一般采用.csv为扩展名英文逗号!


'''(需要注意,由于“\”是字符串中的转义符,所以表示路径时,使用“\\”或“/”代替“\”)'''


q=['Sumjess','计算机二级','一直在换行','55555...']

f = open("hello.csv","w")

f.write(",".join(q)+"\n")

f.close()

3、一维数据的处理:

      对一维数据进行处理首先需要从CSV格式文件读入一维数据,并将其表示为列表对象。

      需要注意,最后一个元素后面有一个换行符(“\n”)。需要采用字符串的strip()方法去掉尾部的换行符,进一步使用split()方法以逗号进行分割。


'''(需要注意,由于“\”是字符串中的转义符,所以表示路径时,使用“\\”或“/”代替“\”)'''


f = open("hello.csv","r")

a=f.read().strip('\n').split(",")

f.close()

print(a)
 

由于一维数据的的处理与列表类型操作一致,这里就不在赘述。

四、二维数据的处理:

 

1、二维数据的表示:

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

      二维数据一般采用相同的数据类型存储数据,便于操作。为求统一,将数值统一表示为字符串形式。

2、二维数据的存储:

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

      二维数据存储为CSV格式,需要将二维列表对象写入CSV格式文件以及将CSV格式读入成二维列表对象。

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

3、二维数据的处理:

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

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

for row in Is :
     for item in row:
           <对第row行第item列元素进行处理>

猜你喜欢

转载自blog.csdn.net/qq_38351824/article/details/86179889