У меня есть файл python values.py
с содержимым
a=10
У меня есть еще один файл Python execute.py
с содержимым
from test.values import a
def changedata():
with open("values.py",'r+') as f:
text = f.read()
new = a + 10
text = text.replace(str(a), str(new))
f.seek(0)
f.write(text)
f.truncate()
for i in range(0,4):
changedata()
Когда я запускаю execute.py
, в идеале содержимое value.py
должно быть a=40
, но это a=20
Я не понимаю, почему python не меняет содержимое value.py
на каждой итерации при запуске в цикле. В настоящее время содержимое value.py
изменяется только один раз, несмотря на то, что оно запускается в цикле. Может кто-нибудь объяснить это поведение, а также предложить способ исправить это.
f.seek(0)
- person EEAH   schedule 21.08.2020from test.values import a
? когда вы делаетеstr(a)
на второй петле? Похоже, чтоstr(a)
может быть не тем, что вы ожидаете, поэтому, когда он выполняет замену, он не находит его? - person jmunsch   schedule 21.08.2020a
, поэтому оно всегда равно10
. Это означает, что ваш вызовtext.replace()
работает только для первого вызова, а не для последующих. - person domochevski   schedule 21.08.2020