目录
4. 使用 pickle.dumps() 和 pickle.loads()
一,Open函数使用
open函数的使用是用于打开一个文件,并返回文件对象。
打开文件后,可以通过文件对象进行读取、写入、关闭等操作。常用的文件对象方法有:
- read(): 读取文件内容。
- write(s): 写入字符串s到文件。
- close(): 关闭文件。
示例代码:
# 以只读模式打开文件
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()
# 以写入模式打开文件
file = open('example.txt', 'w')
file.write('Hello, world!')
file.close()
在使用open函数打开文件后,最好使用with open
语句来自动关闭文件,避免忘记手动关闭文件造成资源浪费。示例代码:
with open('example.txt', 'r') as file:
content = file.read()
print(content)
二,Json与pickle
json
模块是 Python 标准库中用于处理 JSON 格式数据的模块。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。
一,json模块
以下是 json
模块的一些常见用法:
1. 将 Python 对象转换为 JSON 字符串
使用 json.dumps()
方法可以将 Python 对象(字典、列表等)转换为 JSON 格式的字符串。
import json
data = {
'name': 'John',
'age': 30,
'city': 'New York'
}
json_string = json.dumps(data)
print(json_string)
输出:
{"name": "John", "age": 30, "city": "New York"}
2. 将 JSON 字符串解析为 Python 对象
使用 json.loads()
方法可以将 JSON 格式的字符串解析为 Python 对象(字典、列表等)。
json_string = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_string)
print(data['name'])
print(data['age'])
print(data['city'])
输出:
John
30
New York
3. 读取和写入 JSON 文件
可以使用 json.dump()
将 Python 对象直接写入 JSON 文件,以及使用 json.load()
从 JSON 文件读取数据。
写入 JSON 文件示例:
data = {
'name': 'John',
'age': 30,
'city': 'New York'
}
with open('data.json', 'w') as f:
json.dump(data, f)
读取 JSON 文件示例:
with open('data.json', 'r') as f:
data = json.load(f)
print(data)
4. 处理 JSON 中的特殊数据类型
JSON 支持的数据类型包括字符串、数字、布尔值、数组、对象(字典)以及 null 值。json
模块可以处理 Python 中的大部分数据类型,并在序列化为 JSON 字符串时自动转换为适当的 JSON 格式。
例如,处理日期时间对象时,可以使用 default
参数来自定义序列化过程。
import json
from datetime import datetime
data = {
'name': 'John',
'age': 30,
'timestamp': datetime.now()
}
# 自定义处理日期时间对象
def datetime_handler(x):
if isinstance(x, datetime):
return x.isoformat()
json_string = json.dumps(data, default=datetime_handler)
print(json_string)
5. 错误处理
在处理 JSON 数据时,可能会遇到不符合 JSON 格式的字符串,例如格式错误的 JSON 字符串。可以使用 json.JSONDecodeError
来捕获解析错误。
json_string = '{"name": "John", "age": 30, "city": "New York"'
try:
data = json.loads(json_string)
print(data)
except json.JSONDecodeError as e:
print(f"JSON decode error: {e}")
这些是 json
模块的一些常见用法。它在处理数据序列化、反序列化以及文件操作时非常有用,是处理跨平台数据交换的重要工具之一。
二,pikel模块
pickle
模块是 Python 的标准库之一,用于序列化和反序列化 Python 对象。它能够将 Python 对象转换为字节流(即序列化),并且可以从字节流重新构建出原始的 Python 对象(即反序列化)。pickle
模块的主要特点是可以处理几乎所有的 Python 对象,包括自定义的类实例、函数、内置对象等。
以下是 pickle
模块的常见用法示例:
1. 序列化 Python 对象
使用 pickle.dump()
方法将 Python 对象序列化为字节流,并将其写入文件中。
import pickle
data = {
'name': 'John',
'age': 30,
'city': 'New York'
}
# 序列化对象并写入文件
with open('data.pickle', 'wb') as f:
pickle.dump(data, f)
2. 反序列化 Python 对象
使用 pickle.load()
方法从文件中读取字节流并反序列化为 Python 对象。
import pickle
# 从文件中读取并反序列化对象
with open('data.pickle', 'rb') as f:
data = pickle.load(f)
print(data)
3. 处理自定义对象的序列化和反序列化
pickle
模块可以序列化和反序列化自定义的 Python 类的实例。只要对象是 Python 可序列化的,就可以通过 pickle
来处理。
import pickle
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person('Alice', 25)
# 序列化自定义对象
with open('person.pickle', 'wb') as f:
pickle.dump(person, f)
# 反序列化对象
with open('person.pickle', 'rb') as f:
loaded_person = pickle.load(f)
print(loaded_person.name)
print(loaded_person.age)
4. 使用 pickle.dumps()
和 pickle.loads()
除了直接操作文件外,还可以使用 pickle.dumps()
将对象序列化为字节流(而不是写入文件),并使用 pickle.loads()
将字节流反序列化为对象。
import pickle
data = {
'name': 'John',
'age': 30,
'city': 'New York'
}
# 将对象序列化为字节流
serialized_data = pickle.dumps(data)
# 反序列化字节流为对象
deserialized_data = pickle.loads(serialized_data)
print(deserialized_data)
5. 注意事项
- 跨 Python 版本兼容性问题:
pickle
生成的序列化数据依赖于 Python 版本,不同 Python 版本之间的兼容性可能存在问题,因此在存储或传输pickle
数据时要注意。 - 安全性:反序列化
pickle
数据存在安全风险,因为恶意构造的pickle
数据可能会执行任意代码。因此,不要从不受信任的源加载pickle
数据。
总结来说,pickle
模块是 Python 中方便的对象持久化和数据交换工具,特别适用于在同一版本的 Python 环境中快速地序列化和反序列化对象。
三,Os模块的常见用法
os
模块是 Python 的标准库之一,提供了许多与操作系统交互的函数。它允许你执行文件和目录操作,管理进程,处理环境变量等
1. 获取当前工作目录
import os
current_dir = os.getcwd()
print("Current working directory:", current_dir)
2. 切换工作目录
import os
os.chdir('/path/to/new/directory')
print("Current working directory after change:", os.getcwd())
3. 列出目录中的文件和子目录
import os
files_and_dirs = os.listdir('/path/to/directory')
print("Files and directories:", files_and_dirs)
4. 创建目录
import os
os.makedirs('/path/to/new/directory', exist_ok=True)
5. 删除目录
import os
os.rmdir('/path/to/empty/directory')
6. 删除文件
import os
os.remove('/path/to/file.txt')
7. 执行系统命令
import os
os.system('ls -l')
8. 获取环境变量
import os
python_path = os.getenv('PYTHONPATH')
print("PYTHONPATH:", python_path)
9. 执行文件和目录操作的更多方法
os.path
模块提供了一些用于操作路径的有用函数,如os.path.join()
、os.path.exists()
、os.path.isdir()
、os.path.isfile()
等。
10. 获取操作系统相关信息
import os
print("Operating system:", os.name)
print("Parent process ID:", os.getppid())
print("Process ID:", os.getpid())
标签:格式化,os,Python,data,用到,json,模块,序列化,pickle
From: https://blog.csdn.net/2401_86120670/article/details/140504308