Файл Python продолжает выполнять предыдущий вывод

#python #file-handling

#python #обработка файлов

Вопрос:

Я пишу интерпретатор, который может понимать английские команды, например, ‘say Hello World.’ Код Python считывает входные данные из stdin. У меня с этим нет проблем. Затем он преобразует его в код Python и добавляет в файл. Опять же, никаких проблем. Затем у меня есть функция, которая запускает код в файле. Функция выглядит следующим образом:

 def run(runfile):
   with open(runfile,"r") as rnf:
     exec(rnf.read())
  

Затем я просто пишу:

 run("file.py")
  

Затем я запускаю код в файле и имитирую вывод.
Затем я открываю файл, как будто для записи в него, а затем закрываю его в конце программы (в последней строке), чтобы удалить содержимое файла следующим образом:

 open("file.py", "w").close()
  

Проблема в том, что когда я набираю команды на английском языке и запускаю файл, он выполняется правильно. Затем я ввожу другую английскую команду, и она запускает вывод из предыдущего выполнения. Затем я запускаю его снова, и он работает должным образом. Почему это происходит и как я могу это исправить? (Не стесняйтесь задавать вопросы о моем коде)

Комментарии:

1. Я не понимаю проблему. не могли бы вы пояснить это предложение? «Проблема в том, что когда я набираю команды на английском языке и запускаю файл, он выполняется правильно».

Ответ №1:

Спасибо всем, но я исправил проблему, скомпилировав все это в строку, а затем применив exec() к ней.

Ответ №2:

Вам нужно убедиться, что вы не добавляете каждую команду, переданную в ваш файл. В этом случае (если вы добавляете с самого начала), он всегда будет начинаться с предыдущих сохранений и продолжаться дальше.