文件系统
文件系统
持久化存储
在Python中,持久化存储是指将数据保存到一个持久的存储介质(如硬盘)中,以便即使在程序结束后也能再次访问这些数据。Python提供了多种方式来实现数据的持久化存储,包括但不限于文件存储、使用数据库以及利用特定的数据序列化格式。以下是一些常见的Python数据持久化方法:
1. 使用文件系统
最基本的持久化存储方法是直接读写文件。Python提供了多种方式来处理文件,包括文本文件和二进制文件。
1 | # 写入文本文件 |
警告
出现的 UnicodeEncodeError
错误通常与编码有关。当尝试将包含非ASCII字符的字符串写入文件时,在某些情况下,Python的默认编码(如cp1252)可能无法正确处理这些字符。要解决这个问题,可以在写入文件时明确指定一个能够处理这些字符的编码,如UTF-8。
可以通过在 open
函数中添加 encoding='utf-8'
参数来修改代码。这将确保使用UTF-8编码来写入文件,UTF-8编码可以处理大多数字符集。
2. 数据序列化
Python提供了几种数据序列化(转换数据结构为可存储或传输的格式)的方法,例如JSON、Pickle等。
JSON:用于将数据结构转换为JSON格式。
1 | import json |
Pickle:用于Python对象的序列化,可以序列化几乎所有的Python对象类型。
1 | import pickle |
3. 使用数据库
对于复杂的数据持久化需求,常常会使用数据库。Python提供了许多连接和操作数据库的库,支持包括SQLite、MySQL、PostgreSQL等多种数据库。
- SQLite(使用标准库
sqlite3
):
1 | import sqlite3 |
4. ORM(对象关系映射)
ORM框架如SQLAlchemy或Django ORM允许开发者以面向对象的方式来操作数据库,而无需直接编写SQL语句。
1 | from sqlalchemy import create_engine, Column, Integer, String |
总结
Python的数据持久化选项非常多样,可以根据具体的应用场景和需求选择最合适的方法。对于简单的数据存储,文件读写或使用JSON、Pickle等序列化方式可能就足够了。对于更复杂的数据和需求,使用数据库和ORM框架可能是更好的选择
文件操作
open 函数及其模式
'r'
模式:以只读方式打开文件。
1 | with open('file.txt', 'r') as file: |
'w'
模式:以写入方式打开文件,如果文件存在则覆盖,不存在则创建。
1 | with open('file.txt', 'w') as file: |
'a'
模式:以写入方式打开文件,如果文件存在,则在文件末尾追加内容。
1 | with open('file.txt', 'a') as file: |
'r+'
模式:以读写方式打开文件。'w+'
模式:以读写方式打开文件,如果文件存在则覆盖,不存在则创建。'a+'
模式:以读写方式打开文件,如果文件存在,则在文件末尾追加内容。
二进制模式(在模式字符串中加入'b'
),例如'rb'
, 'wb'
, 'ab'
, 'rb+'
, 'wb+'
, 'ab+'
,用于非文本文件。
信息
r - 这个模式代表“只读”模式。当你打开一个文件进行读取时,如果没有指定特定的模式,Python会默认使用这个模式。在这种模式下,只能从文件中读取数据,而不能写入或修改数据。如果文件不存在,尝试以这种模式打开文件会导致错误。
文件操作
file.read()
:读取整个文件。file.write()
:写入字符串到文件。file.tell()
:返回文件的当前位置。file.seek(offset)
:改变文件的当前位置。file.close()
:关闭文件。通常与with
语句一起使用,可以省略。
with 上下文管理器
使用with
上下文管理器可以保证即使在发生异常时文件资源也能被正确释放。
1 | with open('file.txt', 'r') as file: |
os 模块函数
os.getcwd()
:返回当前工作目录。
1 | import os |
os.listdir()
:返回指定目录下的文件和子目录列表。
1 | entries = os.listdir(cwd) |
os.mkdir()
:创建新目录。
1 | os.mkdir('new_directory') |
os.rmdir()
:删除目录。
1 | os.rmdir('new_directory') |
os.remove()
:删除文件。
1 | os.remove('file.txt') |
os.rename()
:重命名文件或目录。
1 | os.rename('old_name.txt', 'new_name.txt') |
- 标题: 文件系统
- 作者: Yiuhang Chan
- 创建于 : 2018-09-28 18:08:12
- 更新于 : 2024-02-28 18:49:13
- 链接: https://www.yiuhangblog.com/2018/09/28/20180928文件系统/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。