python在运行时更改源代码

标签 python

对于那些知道的人来说很简单的问题,对我来说很难,因为我认为这实际上是不可能的。

制作一个简单的python程序后,就可以在电脑的命令提示符下运行了。

我想知道或者是否可以允许以这种方式运行它的人将一个元素添加到列表 (list.insert) 并在下次运行程序时让它仍然存在?(因此编辑预定义列表到新列表并以这种方式保存)

编辑:只是提供更多信息:

程序所要做的就是让您选择一个列表。它从这个列表中返回一个随机项目。 我只是希望允许在运行程序时将项目添加到此列表,然后保持列表更新。

最佳答案

最基本的方法是使用 Pickle 模块将数据保存和加载到磁盘:

http://docs.python.org/2/library/pickle.html

http://docs.python.org/2/library/pickle.html#example

下面是我将如何在一个简单的程序中使用它

try:
    import cPickle as pickle
except ImportError:
    import pickle

class MyClass(object):

    def __init__(self, file_name):
        self.array = []
        self.file_name = file_name
        self.load_data()

    def add_element(self, element):
        self.array.append(element)
        self.save_data()

    def load_data(self):
        try:
            with open(self.file_name, "r") as f:
                self.array = pickle.load(f)
        except IOError:
            pass

    def save_data(self):
        with open(self.file_name, "w") as f:
            pickle.dump(self.array, f)

def main():
    FILE_NAME = "test.pkl"
    a = MyClass(FILE_NAME)
    print "elements in array are", a.array
    for i in range(5):
        a.add_element(i)

if __name__ == "__main__":
    main()

关于python在运行时更改源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15067985/

相关文章:

python - Pandas 滚动窗口似乎向滚动数据引入了偏移量

python - Django makemessages 不创建新添加的语言

python - 如何处理 urllib2 的缩小响应?

python - 如何在pygtk中将数据从一个python脚本文件发送到另一个

python - 在python中获取每个月的年份

python - Django:如何使用 @property 在模型中设置属性

python - 是否可以找到 spaCy POS 标签的不确定性?

python - 如何在给定参数列表的情况下动态创建 where 子句?

python - 将 DCT 系数可视化为图像的好方法

python - 使用类作为局部变量的容器对象替代Python中的 'nonlocal'