首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSV文件内容正在加载"quotes“

CSV文件内容正在加载"quotes“
EN

Stack Overflow用户
提问于 2021-02-15 21:41:40
回答 1查看 38关注 0票数 1

我需要帮助从csv文件中写入和恢复数据。

我的参数game是一个包含2个元素的元组。下面是一个例子:

代码语言:javascript
复制
(((4, 0), (4, 1), (4, 2), (4, 3)), [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]])

我需要两个函数,一个用于保存游戏,另一个用于恢复游戏。这就是我目前所拥有的:

要保存游戏,请执行以下操作:

代码语言:javascript
复制
def save_game(game):
    with open ('file.csv', 'w') as f:
        csv_file = csv.writer(f)
        csv_file.writerow(game)

要恢复游戏:

代码语言:javascript
复制
def recover_game():
    with open ('file.csv', 'r') as f:
        csv_file = csv.reader(f)
        for line in csv_file:
            game = line[0], line[1]
            return game

然而,当恢复游戏时,我得到了类似这样的东西:

代码语言:javascript
复制
('((4, 0), (4, 1), (4, 2), (4, 3))', '[[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]]')

有没有办法去掉引号,这样我就可以得到一个类似于传递给game参数的元组?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-15 21:57:41

正如@BoarGules指出的那样,在这种情况下,你可能应该使用pickle。下面是你怎么做的:

代码语言:javascript
复制
import pickle


def save_game(game, out_pathname="./game.pkl"):
    with open(out_pathname, "wb") as out_file:
        pickle.dump(game, out_file, pickle.HIGHEST_PROTOCOL)


def recover_game(in_pathname="./game.pkl"):
    with open(in_pathname, "rb") as in_file:
        return pickle.load(in_file)

这个方法的优点之一是它适用于任何可拾取的对象,所以即使您稍后决定更改game对象的内部细节,上面的两个函数也应该仍然有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66209156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档