Как я могу сделать скрипт Python изменить сам?
Как я могу сделать скрипт Python изменить сам?
Чтобы свести это, я хотел бы иметь скрипт на Python (run.py
)как это
a = 0
b = 1
print a + b
# do something here such that the first line of this script reads a = 1
Так, что при следующем запуске сценария это будет выглядеть
a = 1
b = 1
print a + b
# do something here such that the first line of this script reads a = 2
Это каким-либо образом возможно? Скрипт может использовать внешние ресурсы; Однако все должно работать, просто запустив одинrun.py
-файл.
РЕДАКТИРОВАТЬ: Возможно, это не было достаточно ясно, но сценарий должен обновляться сам, а не любой другой файл. Конечно, если вы разрешите простой файл конфигурации рядом со сценарием, эта задача будет тривиальной.
Ответ:
На самом деле это намного проще, чем думал. Предложение @khelwood работает просто отлично, открыть скрипт и записать в него собственный контент совершенно без проблем. Решение @ Gerrat также хорошо работает. Вот как у меня это:
# -*- coding: utf-8 -*-
a = 0
b = 1
print a + b
content = []
with open(__file__,"r") as f:
for line in f:
content.append(line)
with open(__file__,"w") as f:
content[1] = "a = {n}\n".format(n=b)
content[2] = "b = {n}\n".format(n=a+b)
for i in range(len(content)):
f.write(content[i])