实际开发中常常会遇到对数据进行持久化的场景,所谓持久化是指将数据从无法长久保存数据的存储介质(通常是内存)转移到可以长久保存数据的存储介质(通常是硬盘)中。实现数据持久化最直接简单的方式就是通过文件系统将数据保存到文件中。
计算机的文件系统是一种存储和组织计算机数据的方法,它使得对数据的访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘、光盘、闪存等物理设备的数据块概念,用户使用文件系统来保存数据时,不必关心数据实际保存在硬盘的哪个数据块上,只需要记住这个文件的路径和文件名。在写入新数据之前,用户不必关心硬盘上的哪个数据块没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。
打开和关闭文件
使用 Python 内置的 open
函数来打开文件,在使用open
函数时,我们可以通过函数的参数指定文件名、操作模式和字符编码等信息
操作模式 | 具体含义 |
| 读取 (默认) |
| 写入(会先清除之前的内容) |
| 追加,将内容写入到已有文件的末尾 |
使用 open
函数打开文件成功后会返回一个文件对象,通过这个对象,我们就可以实现对文件的读写操作;如果打开文件失败,open
函数会引发异常,稍后会对此加以说明。如果要关闭打开的文件,可以使用文件对象的close
方法,这样可以在结束文件操作时释放掉这个文件。
写文本文件
如果要向文件中写入内容,可以在打开文件时使用 w
或者 a
作为操作模式,前者会清除之前的文本内容写入新的内容,后者是在原来内容的尾部追加新的内容。
file = open('hello.txt', 'a', encoding='utf-8')
file.write('你好,Python4。\n')
file.close()
print('文件已写入')
读文本文件
用open
函数打开文本文件时,需要指定文件名并将文件的操作模式设置为'r'
,如果不指定,默认值也是'r'
;如果需要指定字符编码,可以传入 encoding
参数,如果不指定,默认值是 None,那么在读取文件时使用的是操作系统默认的编码。常用的编码类型都是 utf-8
,如果不能保证保存文件时使用的编码方式与 encoding
参数指定的编码方式是一致的,那么就可能因无法解码字符而导致读取文件失败。
下面的例子演示了如何读取一个纯文本文件 hello.txt
, 内容如下:
你好,Python1。
你好,Python2。
你好,Python3。
# 先写内容到文件中
file = open('hello.txt', 'a', encoding='utf-8')
file.write('你好,Python1。\n')
file.write('你好,Python2。\n')
file.write('你好,Python3。\n')
file.close()
# 读取文件
file = open('hello.txt', 'r', encoding='utf-8')
print(file.read())
file.close()
除了使用文件对象的 read
方法读取文件之外,还可以使用for-in
循环逐行读取或者用readlines
方法将文件按行读取到一个列表容器中,代码如下所示。
file = open('hello.txt', 'a', encoding='utf-8')
file.write('你好,Python1。\n')
file.write('你好,Python2。\n')
file.write('你好,Python3。\n')
file.close()
file = open('hello.txt', 'r', encoding='utf-8')
for line in file:
print(line)
file.close()
file = open('hello.txt', 'r', encoding='utf-8')
lines = file.readlines()
for line in lines:
print(line)
file.close()
读取文本文件读到的内容都是由字符串组成,即使里面都是数字,那也是字符串类型的数字,如果你需要进行运算,请先将这些数字转换成
int
或者float
格式再处理。
使用 with 语句读写文件
Python 还提供一种 with-as
语法在做到在读写完文件后自动执行 close 逻辑。示例代码如下:
with open('hello.txt', 'a', encoding='utf-8') as f: # 别忘记末尾的冒号哦
f.write('你好,Python5。\n')
with open('hello.txt', 'r', encoding='utf-8') as f2:
print(f2.read())
在使用 with 语句时,不需要手动关闭文件,当 with 语句内部的逻辑执行完毕时,Python 会自动关闭文件。
标签:文件,二十,Python,encoding,file,基本操作,txt,open,hello From: https://blog.51cto.com/u_16181955/6911587