一、文件的基本概念
1.1 文件类型
文件类型主要分为文本文件和二进制文件。文本文件是由一组特定编码的字符构成的文件,可以由某种文本编辑器对内容进行识别、处理、修改等操作。二进制文件由二进制数“0”和“1”构成,没有统一的字符编码,因此只能以字节流方式打开。
1.2 文本的打开和关闭
文本的打开用open()函数,关闭用close()函数。
Python语言中,在操作文件之前,需要打开文件,结束之后需要关闭文件,这样才能释放与文件绑定的资源。在打开文件时可以指定打开文件模式,如下时open()语句的基本语法格式。
<变量名> = open(文件名,[打开模式])
模式 | 含义 |
r | 以只读方式打开文件,为默认模式 |
w | 打开一个文件写入。文件不存在时,则创建文件;否则覆盖文件 |
x | 创建文件。如果文件存在,则抛出异常 |
a | 追加写入模式。文件不存在时,则创建文件;否则追加内容 |
t | 文本文件模式,为默认模式 |
b | 二进制文件 |
+ | 打开文件进行更新 |
1.3 文本读取
1.3.1 read(size)
读取文本的方法有很多,例如read(size)方法从文件中根据size读取指定个数的字符。
从结果来看只有1、2、3三个字符,其实还有换行两个字符。
1.3.2 tell()
当读取文件时,程序访问第一个字符是起始位置,读取到某一位置,指针就指向相应位置。tell()方法可以返回当前指针位置。
1.3.3 seek()
f.seek()方法可以控制指针所在位置。seek()方法含有两个参数,其基本语法格式如下。
f.seek(<偏移量>[,起始位置])
其中起始位置为“0”表示从文件头开始,为“1”表示从当前指针开始,为“2”表示从文件末尾开始。
偏移量表示从起始位置移动的距离,单位是字节。偏移量为正表示向右偏移,为负表示向左偏移。只有以二进制文件模式读取才可以制定不为0的起始位置。
从这个例子可以知道,f.read(4)读取了前4个字符,f.read(6)读取的是后6个字符,这是因为程序读取文件时地址是f.read(4)后面。
1.3.4 readline([size])
如果读取的文件有多行,也可以通过readline()方法读取文件内容。其基本语法格式如下。
f.readline([size])
无参数size时,可以使用该方法读取文件的某一行内容,遇到换行符停止读取:有参数size时,将读入当前指针位置后size长度的字符串或字节流。
f.readline(6)读取第一行,f.readline(4)读取第二行。
1.3.5 readlines()
readlines()读文件中所有内容,读取结果将以列表形式给出,每行内容为一个列表元素。
1.4 文件写入
write()方法执行写入操作,可以用'w'——覆盖;'a'——追加;'x'——创建文件读取文件。
1.4.1 覆盖写入:w
1.4.2 追加写入:a
1.4.3 创建写入:x
二、数据维度
数据维度可以分为一维数据、二维数据和高维数据。
2.1 一维数据
一维数据只有一个维度,没有添加其他属性,通常用于表示一组相关联的数据。一维数据由具有对等关系的有序或无序数据构成,采用线性方式组织。例如,一个含有姓名的列表或集合。
对于Python中的一维数据,通常使用列表或文件对其进行表示,分隔方式有以下3种。
(1)空格分隔
使用一个或多个空格进行不同数据的分隔。
苹果 香蕉 番茄 西瓜
(2)逗号分隔
使用逗号对不同数据进行分隔
苹果,香蕉,番茄,西瓜
(3)其他符号
使用其他符号,如美元符号、分号或换行符等,分隔数据。
苹果
香蕉
番茄
西瓜
一维数据和二维数据通常使用逗号分隔值数据存储格式,以“.csv"为扩展名,数据直接用逗号隔开。
可以在循环每一行内容时使用replace()方法去掉每行结尾的换行符,例如先使用Line = line.replace("\n",""),再调用append()方法。
2.2 二维数据
二维数据由多个一维数据构成,可以看作一维数据的组合形式。
读取csv文件,输出内容
三、处理文件的异常
3.1 try-finally
try-finally语句捕获和处理此类异常,从而增加程序的安全性。
3.2 try-except
try-except方法捕获对应类型异常,并进行相应处理