|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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] |
评分
-
查看全部评分
|