一、Open函数使用
在python中,open()
函数用于打开文件,并返回一个文件对象,同时支持读取和写入文件。
基本用法:
file = open(file_path, mode='r', encoding=None, newline=None)
其中file_path表示的是文件的路径,可以是相对路径或绝对路径。mode表示的是用什么模式打开文件,encoding是使用什么方式进行解读,newline是指定换行符的处理方式,默认值是None,表示使用系统默认的换行符处理。
(1)、mode(文件的打开模式)
参数 mode
是用来指定文件打开模式的一个字符串参数。该参数决定了文件的操作方式,包括读取、写入、追加等操作。
-
读取模式 ("r"):
- 默认模式,用于读取文件内容。
- 如果文件不存在,会引发
FileNotFoundError
错误。 -
f = open("./44.函数的参数.py", mode="r", encoding="utf8") # 能否读取 r = f.readable() # 读取整个文件,并以字符串的形式返回 r = f.read() # 读取一行,并返回字符串 r = f.readline() # 逐行读取,并逐一放入列表中 r = f.readlines()
-
写入模式 ("w"):
- 打开文件进行写入操作。
- 如果文件已存在,则会清空文件中的内容,从头开始写入。
- 如果文件不存在,则会创建一个新文件进行写入。
-
f = open("./44.函数的参数.py", mode="w", encoding="utf8") # 能否写入 w = f.writeable() # 将原文件中的内容覆盖,再写入"hello world" w = f.write("hello world")
-
追加模式 ("a"):
- 打开文件进行追加操作,即在文件末尾添加新内容。
- 如果文件不存在,则会创建一个新文件进行写入。
-
with open('file.txt', 'a') as file: file.write('\nAdding more content...') # 在file.txt内容的后面进行添加内容\nAdding more content...
-
二进制模式 ("b"):
- 以二进制模式打开文件,用于处理非文本文件,如图片、视频等。
- 可以与读取、写入、追加模式一起使用,例如
'rb'
、'wb'
、'ab'
。
-
文本模式 (
"t"
或省略不写):- 默认以文本模式打开文件,用于处理文本文件。
- 可以与读取、写入、追加模式一起使用,例如
'rt'
、'wt'
、'at'
。
-
读写模式 ("r+"):
- 打开文件进行读取和写入操作,文件指针位于文件开头。
- 文件必须存在,否则会抛出
FileNotFoundError
。
-
写读模式 ("w+"):
- 打开文件进行读取和写入操作。
- 如果文件已存在,则清空文件内容,并从头开始写入;如果文件不存在,则创建新文件。
- 文件指针位于文件开头。
-
追加读取模式 (
"a+"
):- 打开文件进行读取和追加操作。
- 文件指针位于文件末尾。
(2)、encoding
encoding指定文件的编码方式,默认为None,表示使用系统默认的编码方式。
encoding包括:UTF-8 ('utf-8'
),ASCII ('ascii'
),UTF-16 ('utf-16'
),GBK ('gbk'
)。
二、JSON与pickle
(1)、JSON
在Python中,可以使用json
模块来处理JSON数据。json
模块提供了一些函数来进行JSON数据的编码和解码。注:json能被所有的编程语言读取。
下面是一些常用的json
函数:
json.loads()
:将JSON字符串解码为Python对象。json.dumps()
:将Python对象编码为JSON字符串。json.load()
:从文件中读取JSON数据并解码为Python对象。json.dump()
:将Python对象编码为JSON格式并写入文件。
使用示例:
import json
# JSON字符串解码为Python对象
json_str = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_str)
print(data['name']) # 输出: John
# Python对象编码为JSON字符串
data = {
'name': 'John',
'age': 30,
'city': 'New York'
}
json_str = json.dumps(data)
print(json_str) # 输出: {"name": "John", "age": 30, "city": "New York"}
# 从文件中读取JSON数据并解码为Python对象
with open('data.json') as json_file:
data = json.load(json_file)
print(data['name']) # 输出: John
# 将Python对象编码为JSON格式并写入文件
data = {
'name': 'John',
'age': 30,
'city': 'New York'
}
with open('data.json', 'w') as json_file:
json.dump(data, json_file)
注意:在使用json
函数时,需要将输入的字符串或文件内容符合JSON数据的格式。
(2)、pickle
pickle模块是Python中用于对象序列化和反序列化的模块。它可以将Python对象转换成字节流,以及将字节流转换回Python对象。
使用pickle模块,可以方便地将复杂的数据结构(如列表、字典、类等)进行序列化,并保存到文件或网络中。同时,也可以通过反序列化,将保存的数据重新转化成Python对象。
注:pickle只能被python语言识别。
以下是pickle模块的常用函数:
pickle.dumps(obj)
: 将对象obj序列化成字节流。pickle.loads(bytes)
:将字节流bytes反序列化成Python对象。pickle.dump(obj, file)
:将对象obj序列化后写入文件file。pickle.load(file)
:从文件file中读取序列化后的对象并进行反序列化。
import pickle
# 创建一个字典对象
data = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 将对象序列化为字节流
bytes_data = pickle.dumps(data)
# 将字节流反序列化为对象
obj = pickle.loads(bytes_data)
print(obj) # 输出: {'name': 'Alice', 'age': 25, 'city': 'New York'}
三、Os模块
在 python 中,os
模块提供了与操作系统交互的功能。它允许您执行文件和目录操作,处理进程和环境变量,以及执行其他与操作系统相关的任务。os模块跟win系统中cmd的操作命令大致一样。
import os
# 列出目录内容
dir_contents = os.listdir('/path/to/directory')
print("Directory contents:", dir_contents)
# 创建目录
os.mkdir('/path/to/new/directory')
# 删除目录
os.rmdir('/path/to/directory')
# 判断文件或目录是否存在
exists = os.path.exists('/path/to/file_or_directory')
-
os.path.isfile(path)
:检查指定路径是否为一个文件。 -
os.path.isdir(path)
:检查指定路径是否为一个目录。 -
os.path.join(path1, path2)
:将两个路径组合成一个新的路径。 -
os.path.basename(path)
:返回指定路径的文件名。 -
os.path.dirname(path)
:返回指定路径的目录名。