Python与医药数据处理 第七章
第七章 文件
7.1 文件
文件的分类:文本文件、二进制文件
文件的打开方式:文本文件方式、二进制文件方式
无论是文本文件还是二进制文件都有两种打开方式,二者相互独立互不相关。文件的类型决定的是其存储的特点,打开方式类型决定的是其打开呈现的特点
7.2 文件操作
7.2.1 文件的操作步骤
无论是文本文件还是二进制文件都统一进行操作步骤:打开 — 操作 — 关闭
7.2.2 打开、关闭文件
<变量名> = open(<文件名>, <打开模式>) 用于打开文件操作,返回一个 stream 对象
文件名:如果操作文本与 .py 程序位于同一目录下,可直接写文件名称,如果不在,也可以写文件的具体目录,如

打开模式:
r:只读,如果文件不存在报错 'FileNotFoundError'(默认值)
w:覆盖写,文件不存在则创建,文件存在则覆盖原内容
x:创建写,文件不存在则创建,文件存在报错 'FileExisitsError'
a:追加写:文件不存在则创建,文件存在则在后面接着写
b:二进制文件模式
t:文本文件模式(默认值)
+:与 r、w、x、a 一起使用,表示在原功能基础上增加功能,同时支持读和写(默认缺省)
上面七个元素被分为三部分,打开模式应由这三部分各一个内容组成,如果前两个缺省,则选用相应的默认值,最后一个缺省,则默认不扩展功能
<变量名>.close():关闭文件,释放对文件的控制权和独占状态
7.2.3 读文件

for line in fi.readlines():
print(line)
该段代码中 readlines() 方法通过将文件内容全部读到一个列表中,再进行取行元素,但是如果文件非常大,创建这样一个列表会极其占用内存,因此,我们可以优化:
for line in fi:
print(line)
文件被存储到变量名之后,其本身就是被视为一个行序列,因此可以直接从其中遍历行
7.2.4 写文件

write() 方法主要用于字符串的写入
with open('example.txt', 'w') as f:
f.write("Hello") # 写入 "Hello"
f.write(" World!\n") # 接着写入 " World!" 并换行
writelines() 方法可以理解为 readlines() 的逆过程,可以把列表等序列写入到文件
lines = ["First line\n", "Second line\n", "Third line\n"]
with open('example.txt', 'w') as f:
f.writelines(lines) # 写入所有行,依赖列表中已有的换行符
7.2.5 移动文件指针
文件指针,可以理解为“光标”的位置,写完文件之后,指针位于文末的位置,如果此时想要读取整篇文档,应当将指针移动到文件开头,重新扫描文件并阅读

7.3 一、二维数据文件操作
7.3.1 一、二维数据的存储
一维数据常写入 .txt .csv .tsv 文件中,写入前一般先根据文件格式要求格式化为特定字符分割的字符串(如空格,西文逗号,西文分号)
二维数据由多条以为数据组成。二维数据通常存储于 .csv .tsv .txt 有时也存为 .json 文件
.csv 二维数据存储严格遵循以下规则:
- 纯文本格式,单一编码表示字符
- 可以不包含列名,包含时列名放在第一行
- 每行表示一个一维数据,多行表示二维数据
- 以行为单位,开头不留空行
- 以西文逗号分割数据,即使列数据为空,也要保留逗号
7.3.2 一、二维数据的写与读
核心模块:
写文件通过 join() 语句完成,如果是二维,则连写两次
读文件通过 split() 语句完成,如果是二维,则连切两次,最后写入嵌套列表方便操作
具体方式见代码:



蓝色框出的为 读/写 操作的核心语句

浙公网安备 33010602011771号