马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 歌者文明清理员 于 2023-2-16 18:11 编辑
玩玩三体论坛
首先,需要将论坛数据保存到二进制文件里,所以使用 pickle 库。
一般我们只使用 dump 和 load 函数。
dump 函数的一般格式如下dump(data, file)
data:数据
file:文件(open())
load 是从文件中加载数据。参数load(file)
file:文件(open())
如果你去翻 python 官网的说明,你会发现这并不是完整的参数形式,缩水了很多
所以代码如下from pickle import load, dump
自定义 writeInData 函数,它的调用形式为writeInData(dataType, data, fileName)
dataType:数据类型
data:数据
fileName:文件名
函数的定义如下def writeInData(dataType, data, fileName):
"""
在文件中写入数据。
:param dataType: 数据类型
:param data: 数据
:param fileName: 文件名
:return : None
"""
# 打开文件
# 如果文件不存在
try:
file = open(fileName, 'rb')
# 源数据,为字典
originData = load(file)
file.close()
except:
originData = dict() # 为了和集合区分
file = open(fileName, 'wb')
# 怕是空的
if dataType not in originData:
originData[dataType] = []
# 字典的每个值都是列表
originData[dataType].append(data)
dump(originData, file)
file.close()
读取回复消息def readReply(fileName, mode, index):
"""
读取回复消息
:param fileName: 文件名
:param mode: 模式
:param index: 索引
:return : 读取的信息
"""
file = open(fileName, 'rb')
data = load(file)
if mode not in data:
# 我还真是故意的
raise ValueError('读不出来啊')
# 回复信息
replyMessage = data[mode][index]
return '%s 说:%s' % replyMessage
哦对了这是 tools.py
然后TEST = -1
FILENAME = 'data.dat'
if __name__ == '__main__':
# (谁, 说了啥)
writeInData(TEST, ('大史', '面壁者罗辑,我是您的破壁人'), FILENAME)
print(readReply(FILENAME, TEST, 0))
成功!
完整代码如下from pickle import load, dump
def writeInData(dataType, data, fileName):
"""
在文件中写入数据。
:param dataType: 数据类型
:param data: 数据
:param fileName: 文件名
:return : None
"""
# 打开文件
# 如果文件不存在
try:
file = open(fileName, 'rb')
# 源数据,为字典
originData = load(file)
file.close()
except:
originData = dict() # 为了和集合区分
file = open(fileName, 'wb')
# 怕是空的
if dataType not in originData:
originData[dataType] = []
# 字典的每个值都是列表
originData[dataType].append(data)
dump(originData, file)
file.close()
def readReply(fileName, mode, index):
"""
读取回复消息
:param fileName: 文件名
:param mode: 模式
:param index: 索引
:return : 读取的信息
"""
file = open(fileName, 'rb')
data = load(file)
if mode not in data:
# 我还真是故意的
raise ValueError('读不出来啊')
# 回复信息
replyMessage = data[mode][index]
return '%s 说:%s' % replyMessage
TEST = -1
FILENAME = 'data.dat'
if __name__ == '__main__':
# (谁, 说了啥)
writeInData(TEST, ('大史', '面壁者罗辑,我是您的破壁人'), FILENAME)
print(readReply(FILENAME, TEST, 0))
[b]这只是第一期!!![/b] |