用python 分别使用pickle和struct 写入和读取二进制文件。
时间: 2024-02-28 09:55:45 浏览: 81
好的,可以按照如下代码分别使用 `pickle` 和 `struct` 写入和读取二进制文件。
使用 `pickle` 写入和读取二进制文件:
```python
import pickle
# 定义字典数据
data = {"name": "Alice", "age": 20, "gender": "female"}
# 写入二进制文件
with open("data.pkl", "wb") as f:
pickle.dump(data, f)
# 读取二进制文件
with open("data.pkl", "rb") as f:
new_data = pickle.load(f)
print(new_data)
```
代码中,首先导入 `pickle` 模块。
然后定义字典数据 `data`,包含名字、年龄和性别信息。
接下来使用 `with open()` 语句打开二进制文件 `"data.pkl"`,以二进制写入(`wb`)模式打开,并使用 `pickle.dump()` 函数将字典数据 `data` 写入文件。
然后使用 `with open()` 语句再次打开二进制文件 `"data.pkl"`,以二进制读取(`rb`)模式打开,并使用 `pickle.load()` 函数从文件中读取数据,并将其赋值给新的变量 `new_data`。
最后输出新的数据 `new_data`,验证读取是否成功。
接下来,使用 `struct` 写入和读取二进制文件:
```python
import struct
# 定义元组数据
data = (1, 2, 3, 4, 5)
# 写入二进制文件
with open("data.bin", "wb") as f:
for i in data:
# 将每个元素按照整数格式(i)打包成二进制数据
binary_data = struct.pack("i", i)
# 将二进制数据写入文件
f.write(binary_data)
# 读取二进制文件
with open("data.bin", "rb") as f:
new_data = []
while True:
# 从文件中读取4字节数据
binary_data = f.read(4)
if not binary_data:
# 如果读取到文件末尾,则退出循环
break
# 将4字节数据按照整数格式(i)解包成元素,并添加到新列表中
item = struct.unpack("i", binary_data)[0]
new_data.append(item)
print(new_data)
```
代码中,首先定义元组数据 `data`,包含5个整数。
接下来使用 `with open()` 语句打开二进制文件 `"data.bin"`,以二进制写入(`wb`)模式打开。
在循环中,使用 `struct.pack()` 函数将每个元素按照整数格式(`i`)打包成二进制数据,并使用 `f.write()` 函数将二进制数据写入文件。
然后使用 `with open()` 语句再次打开二进制文件 `"data.bin"`,以二进制读取(`rb`)模式打开。
在循环中,使用 `f.read()` 函数从文件中读取4字节数据,如果读取到文件末尾,则退出循环。
然后使用 `struct.unpack()` 函数将4字节数据按照整数格式(`i`)解包成元素,并将其添加到新列表 `new_data` 中。
最后输出新的数据 `new_data`,验证读取是否成功。
这样,就可以使用 `pickle` 和 `struct` 分别写入和读取二进制文件了。
阅读全文