如何在Python中将数据作为变量保存到文本文件中/从中加载数据?

时间:2014-09-02 03:56:07

标签: python python-2.7

我正在使用Python 2.7.8而我正在尝试编写一个简单的基于文本的游戏。为了使它能够正常工作,我希望能够将某些变量保存到文本文件中,然后在下次运行程序时将它们作为变量加载。理想情况下,我我想将每个变量存储在自己的行上,但我不太确定如何实现这一点。编辑:这是我的相关代码:

https://gist.github.com/anonymous/3a14fcd68b0045b2c0c0

出于某种原因,代码在启动时崩溃。 抱歉,因为我对Python有点新意。无论如何,有没有更好的方法将此信息写入文件?另外,我可以用什么来读取该文件中的变量并将其作为变量存储在游戏中?

编辑:我现在学到了一些非常有用的东西,可以让我调试。以下是shell在运行代码时所说的内容:

https://gist.github.com/anonymous/bfc085d8d1d0b7969574

非常感谢。

3 个答案:

答案 0 :(得分:3)

使用ConfigParser示例创建“保存文件”,如下所示:

import ConfigParser

countryName = raw_input("What will your country be called? ")

config = ConfigParser.RawConfigParser()

config.add_section('Countries')
config.set('Countries', 'MyCountry', countryName)

with open('save.txt', 'wb') as saveFile:
    config.write(saveFile)

运行此命令将创建一个“save.txt”文件,然后您可以使用以下方法读取该文件:

import ConfigParser
config = ConfigParser.RawConfigParser()
config.read('save.txt')

countryName = config.get('Countries', 'MyCountry')

答案 1 :(得分:2)

此问题最有力的解决方案是pickle您要存储的数据:https://docs.python.org/2/library/pickle.html

粗略地说,Pickle取一个物体并将其变成一个弦。你以后可以" unpickle"将对象取回的字符串。

如果您的数据很简单并且您希望能够手动查看和修改,那么对于您来说,酸洗可能过于复杂。 在这种情况下,我强烈建议的一种可能性是使用XML或JSON作为数据存储格式。 它们可以灵活地表示像哈希表和列表这样的结构,这些格式更简单(包括你自己可能定义的大多数格式)都缺乏。

答案 2 :(得分:0)

有很多方法可以做到这一点! ConfigParsershelvesqlitepickle等。

我会做一些非常简单的事情。例如,创建两个函数" get_value(name)"和" set_value(名称,值)"像这样:

import os
import time

#######

def get_value(name):
    name += '.cfg'
    if not os.path.exists(name):
        return ''
    with open(name) as f:
        return f.read()

def set_value(name, value):
    name += '.cfg'
    with open(name, 'w') as f:
        f.write(value)

#######

if __name__ == "__main__":
    countryname = get_value('countryname')
    if not countryname:
        countryname = raw_input("What will your country be called? ")
        set_value('countryname', countryname)

    print "Welcome to %s!" % countryname
    time.sleep(0.5)

这将为每个值创建一个文件。如果这太笨重,我会切换到JSON。

这是在行动:

$ python game.py
What will your country be called? Steveland
Welcome to Steveland!

# it remembers my answer
$ python game.py
Welcome to Steveland!

$ ls *.cfg
countryname.cfg

# reset my answer
$ rm countryname.cfg

$ python game.py
What will your country be called? Stevesylvania
Welcome to Stevesylvania!