分别使用pickle和struct 写入和读取二进制文件
时间: 2023-08-09 14:08:01 浏览: 188
好的,以下是Python的代码实现:
使用pickle模块写入和读取二进制文件:
```python
import pickle
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 写入二进制文件
with open("digit.pickle", "wb") as f:
pickle.dump(data, f)
# 读取二进制文件
with open("digit.pickle", "rb") as f:
loaded_data = pickle.load(f)
print(loaded_data) # 输出 [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
解释一下代码:
首先,我们导入了Python内置的`pickle`模块。
接着,我们定义了一个整数列表`data`,包含数字1到9。
然后,我们使用`open`函数打开一个名为`digit.pickle`的二进制文件,模式为写入("wb")。然后使用`pickle.dump`方法将整数列表写入文件中。
接下来,我们使用`open`函数再次打开名为`digit.pickle`的文件,模式为读取("rb")。然后使用`pickle.load`方法从文件中读取数据并存储在`loaded_data`变量中。
最后,我们输出`loaded_data`变量,即读取到的整数列表。
使用struct模块写入和读取二进制文件:
```python
import struct
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 写入二进制文件
with open("digit.bin", "wb") as f:
for num in data:
f.write(struct.pack(">i", num))
# 读取二进制文件
loaded_data = []
with open("digit.bin", "rb") as f:
while True:
buf = f.read(4)
if not buf:
break
loaded_data.append(struct.unpack(">i", buf)[0])
print(loaded_data) # 输出 [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
解释一下代码:
首先,我们导入了Python内置的`struct`模块。
接着,我们定义了一个整数列表`data`,包含数字1到9。
然后,我们使用`open`函数打开一个名为`digit.bin`的二进制文件,模式为写入("wb")。然后使用`struct.pack`方法将整数转换为4个字节的二进制数据,并使用`write`方法将其写入文件中。
接下来,我们使用`open`函数再次打开名为`digit.bin`的文件,模式为读取("rb")。然后使用一个`while`循环从文件中读取数据,每次读取4个字节,并使用`struct.unpack`方法将其转换为整数并添加到`loaded_data`列表中。当读取到文件末尾时,退出循环。
最后,我们输出`loaded_data`变量,即读取到的整数列表。
阅读全文