文件读写是Python中常用的操作之一,可以使用内置的open()函数来打开文件,并使用不同的模式进行读写操作。实现文件的读写主要有以下几步:
一、Open函数使用
open()函数用于打开一个文件,并返回文件对象。它的基本语法如下:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file 文件路径 形参 mode 打开模式 encoding 解码方式
参数说明:
file: 文件名(包括路径),可以是字符串类型(表示文件路径)或者是一个文件描述符(整数类型)。
mode: 打开文件的模式,默认为'r'(只读)。常见的模式有:
'r': 只读模式
'w': 写入模式,会覆盖原文件
'a': 追加模式,在原文件末尾添加内容
'x': 创建新文件并写入内容,如果文件已存在则报错
'b': 二进制模式
't': 文本模式(默认)
'+': 可读可写模式
buffering: 指定缓冲策略,0表示不缓冲,1表示行缓冲,大于1表示缓冲区大小(默认值为-1,表示使用默认缓冲策略)
encoding: 文件的编码方式,默认为None(使用默认编码方式)
errors: 在encoding指定的编码方式下,如果遇到无法解码的字节时的处理方式,默认为None(表示引发一个UnicodeDecodeError错误)
newline: 控制转换行为,默认为None(根据平台进行转换)
closefd: 当文件关闭时,同时关闭底层文件描述符,默认为True(表示关闭)
opener: 用于打开文件的自定义开启器(如果没有指定,使用默认的开启器)
open()函数返回一个文件对象,可以使用read()、readline()、readlines()、write()、writelines()等方法对文件进行读写操作。使用完文件后,需要通过close()方法关闭文件对象,以释放资源。也可以使用with语句来自动关闭文件对象,无需调用close()方法。
with open('file.txt', 'r') as f:
print(f.read())
这样就打开了名为file.txt的文件,并打印了文件的所有内容。
二、Json与pickle
Python中的JSON和pickle都是用于实现对象的序列化和反序列化的模块。在Python中,可以使用json
模块来处理JSON数据。json
模块提供了dumps()
和loads()
函数来进行JSON的序列化和反序列化。dumps()
函数将Python对象转换为JSON格式的字符串,loads()
函数将JSON字符串转换为Python对象。
import json
# 直接将obj序列化到文件
with open("./data.txt", "w") as f:
json.dump(datas, f)
# 读取文件内容 返回字符串 将字符串反序列化python数据结构
with open("./data.txt", "r") as f:
content = f.read()
print(content, type(content))
datas = json.loads(content)
print(datas, type(datas))
first_user = datas["user"][0]
print(first_user.get("un"), first_user.get("pwd"))
#load 一步完成 把文件内容反序列化成python数据结构
with open("./data.txt", "r") as f:
datas = json.load(f)
first_user = datas["user"][0]
print(first_user.get("un"), first_user.get("pwd"))
pickle是Python中的一个标准模块,用于实现对象的序列化和反序列化。与JSON不同,pickle可以用于序列化几乎所有的Python对象,包括自定义类的实例、函数、类等。pickle序列化的对象是二进制格式的,不可读。在Python中,可以使用pickle
模块来进行pickle的操作。pickle
模块提供了dump()
和load()
函数来进行pickle的序列化和反序列化。
import pickle
with open("./data2.txt","wb") as f:
f.write(data_bytes)
with open("./data2.txt","wb") as f:
pickle.dump(data, f)
with open("./data2.txt","rb") as f:
content = f.read()
data = pickle.loads(content)
print(data,type(data),data["address"][2])
with open("./data2.txt", "rb") as f:
data = pickle.load(f)
print(data, type(data), data["address"][0])
三、Os模块
os模块是Python标准库中的一个模块,用于与操作系统进行交互。它提供了一些方法来执行操作系统相关的功能,如文件和目录管理,进程管理等。
os.name:返回操作系统的名称,例如'posix'表示Linux和Unix,'nt'表示Windows。
os.getcwd():获取当前工作目录。
os.chdir(path):改变当前工作目录到指定路径。
os.listdir(path):返回指定路径下的文件和目录列表。
os.mkdir(path):创建一个新目录。
os.remove(path):删除指定的文件。
os.rmdir(path):删除指定的目录。
os.path.exists(path):检查指定路径是否存在。
os.path.isfile(path):检查指定路径是否为文件。
os.path.isdir(path):检查指定路径是否为目录。
os.path.join(path1, path2):将两个路径合并为一个路径。
愿与最重要之人能再次相会。 —— 艾拉《可塑性记忆》