【发布时间】:2017-12-23 20:16:48
【问题描述】:
我想创建 python 脚本,它可以使用Python Language Services 或任何其他方式修改该脚本本身中的代码。
例如跟踪其成功执行次数的脚本
import re
COUNT = 0
def updateCount():
# code to update second line e.g. COUNT = 0
pass
if __name__ == '__main__':
print('This script has run {} times'.format(COUNT))
updateCount()
成功执行此脚本后,代码应更改为
import re
COUNT = 1
def updateCount():
# code to update second line e.g. COUNT = 0
pass
if __name__ == '__main__':
print('This script has run {} times'.format(COUNT))
updateCount()
我想到的简单方法是在写入模式下打开__file__,并使用调节器表达式等进行必要的修改。但这没有用,我得到了异常io.UnsupportedOperation: not readable。即使这种方法可行,也会非常冒险,因为它会破坏我的整个脚本。所以我正在寻找使用 Python 语言服务的解决方案。
【问题讨论】:
-
您可以打开和编辑
__file__。 -
请注意,您可能会遇到权限问题(如果脚本是由没有写入权限的用户运行的)。
-
这不起作用
io.UnsupportedOperation: not readable -
您可能正在寻找
eval函数。您可以将 Python 源代码构建为文本并在您自己的模块或其他上下文中运行它。编辑你自己的 .py 文件是可能的,作为一个有趣的实验:) -
将控件值写入其他文件。
标签: python self-modifying