Python eval()和exec()

堆垛机

有没有一种方法可以使用Pythoneval()和/或exec()在程序运行之间保持状态,而无需将数据写入文件或数据库。这是更具体的问题。我想编写一个程序,打印出一个数字,然后每次再次运行时都将自身加1,而不会在文件或数据库中保留任何变量。我在最近的一次采访中被问到了这个问题。任何帮助表示赞赏。

凯文

免责声明:我建议这样做。在99.999%的时间内,最好将可序列化的信息存储在自己的文件中。

如果通过“不将数据写入文件”来表示“不将数据写入其自己的文件”,则可以打开正在运行的Python文件并就地重写数据:

import re

x = 0
print "The value of the variable x is: {}".format(x)

with open("test.py") as file:
    data = file.read()

data = re.sub(r"x = (\d+)", "x = {}".format(x+1), data)

with open("test.py", "w") as file:
    file.write(data)

现在,该值将随每次后续执行而更改。

C:\Users\Kevin\Desktop>test.py
The value of the variable x is: 0

C:\Users\Kevin\Desktop>test.py
The value of the variable x is: 1

C:\Users\Kevin\Desktop>test.py
The value of the variable x is: 2

C:\Users\Kevin\Desktop>test.py
The value of the variable x is: 3

C:\Users\Kevin\Desktop>test.py
The value of the variable x is: 4

但是同样,最好将数据保存在一个单独的文件中,例如shelve

import shelve

d = shelve.open("data.dat")
if "x" not in d:
    d["x"] = 0

print "The value of x is: {}".format(d["x"])
d["x"] += 1

或者,如果您重视人类可读性,则可以使用json:

import json

try:
    with open("data.dat") as file:
        d = json.load(file)
except IOError: #first execution. file doesn't exist yet.
    d = {"x":0}

print "The value of x is: {}".format(d["x"])
d["x"] += 1

with open("data.dat", "w") as file:
    json.dump(d, file)

如果您有很多数据,甚至是功能完善的数据库。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Python exec()/ eval()调用中获取结果?

来自分类Dev

在Python中使用eval或exec设置全局变量

来自分类Dev

如何在Python 2中的exec内部使用eval

来自分类Dev

在Python中使用eval或exec设置全局变量

来自分类Dev

如何从Python exec()/ eval()调用中获取结果?

来自分类Dev

tcl:eval和exec混淆点

来自分类Dev

eval和exec有什么区别?

来自分类Dev

带有变量替换的Eval和exec

来自分类Dev

Python中的importlib.reload()和exec()

来自分类Dev

使用eval和exec,如何编写匿名函数?

来自分类Dev

在python 3中的函数中创建动态命名的变量/在python 3中了解exec / eval / locals

来自分类Dev

python exec在2.7和3.3之间表现不同

来自分类Dev

使用Python的eval()时,局部变量和全局变量有什么区别?

来自分类Dev

Python编译器和虚拟机如何处理eval表达式?

来自分类Dev

从文件中读取和评估方程列表时加快 Python eval

来自分类Dev

如何使 eval 寄存器整数(例如 05 和 04)有效?(Python)

来自分类Dev

scope of eval function in python

来自分类Dev

Lua中的Python eval()

来自分类Dev

eval `ssh-agent` 和 exec ssh-agent bash 的替代方法

来自分类Dev

在Python中公开C ++类(只能加载ET_DYN和ET_EXEC)

来自分类Dev

从命令行和python API在docker exec中执行管道

来自分类Dev

使用Python的exec()函数和格式化的字符串?

来自分类Dev

使用Python的exec()函数和格式化的字符串?

来自分类Dev

何时使用DataFrame.eval()与pandas.eval()或python eval()

来自分类Dev

python tkinter exec 问题

来自分类Dev

使用Python eval评估类

来自分类Dev

使用Python eval评估类

来自分类Dev

python 3.5.2中的eval(“ a + = b”)

来自分类Dev

使用标准输入和标准输出使用 shell_exec 或 exec 其他任何东西从命令行运行 python 文件并传递输入

Related 相关文章

  1. 1

    如何从Python exec()/ eval()调用中获取结果?

  2. 2

    在Python中使用eval或exec设置全局变量

  3. 3

    如何在Python 2中的exec内部使用eval

  4. 4

    在Python中使用eval或exec设置全局变量

  5. 5

    如何从Python exec()/ eval()调用中获取结果?

  6. 6

    tcl:eval和exec混淆点

  7. 7

    eval和exec有什么区别?

  8. 8

    带有变量替换的Eval和exec

  9. 9

    Python中的importlib.reload()和exec()

  10. 10

    使用eval和exec,如何编写匿名函数?

  11. 11

    在python 3中的函数中创建动态命名的变量/在python 3中了解exec / eval / locals

  12. 12

    python exec在2.7和3.3之间表现不同

  13. 13

    使用Python的eval()时,局部变量和全局变量有什么区别?

  14. 14

    Python编译器和虚拟机如何处理eval表达式?

  15. 15

    从文件中读取和评估方程列表时加快 Python eval

  16. 16

    如何使 eval 寄存器整数(例如 05 和 04)有效?(Python)

  17. 17

    scope of eval function in python

  18. 18

    Lua中的Python eval()

  19. 19

    eval `ssh-agent` 和 exec ssh-agent bash 的替代方法

  20. 20

    在Python中公开C ++类(只能加载ET_DYN和ET_EXEC)

  21. 21

    从命令行和python API在docker exec中执行管道

  22. 22

    使用Python的exec()函数和格式化的字符串?

  23. 23

    使用Python的exec()函数和格式化的字符串?

  24. 24

    何时使用DataFrame.eval()与pandas.eval()或python eval()

  25. 25

    python tkinter exec 问题

  26. 26

    使用Python eval评估类

  27. 27

    使用Python eval评估类

  28. 28

    python 3.5.2中的eval(“ a + = b”)

  29. 29

    使用标准输入和标准输出使用 shell_exec 或 exec 其他任何东西从命令行运行 python 文件并传递输入

热门标签

归档