#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:
Вам нужно убедиться, что вы не добавляете каждую команду, переданную в ваш файл. В этом случае (если вы добавляете с самого начала), он всегда будет начинаться с предыдущих сохранений и продолжаться дальше.