Запустите программу до конца файла, даже если обнаружена ошибка. - PullRequest
0 голосов
/ 18 октября 2018

Я работал над программой, которая принимает в качестве аргументов два файла, оценивает выражения в первом файле и возвращает значение во второй файл.Если перехватывается выражение, которое дает NameError, я пишу Not valid во второй файл и продолжаю работать до EOF.Это вся моя программа:

import os.path as path_check
def file_evaluate(read_from, write_to):
try:
    file_read = open(read_from, "r")
except FileNotFoundError:
    print ("File not found")
file_write = open(write_to, "w")

try:
    for line in file_read:
        print(eval(line), file=file_write)
except NameError:
    print("Bad Expression", file=file_write)

def main():     
    file_to_read = input("Please enter a file to read from:")
    file_to_write= input("Please enter a file to write to:")
    if path_check.exists(file_to_read)==True:
    print("Output file is successfully created. The output is written to", file_to_write)
    file_evaluate(file_to_read, file_to_write)
else:
    print("File '",file_to_read,"' does not exist")

Если мой первый файл имеет 3 выражения

  1. a + b
  2. 5 ** 6 + 4
  3. 12 / xx

Вывод моего второго файла будет «Плохое выражение», затем он просто останавливается.Я хочу бежать до EOF.Я не хочу, чтобы решение было достаточно нескольких подсказок.Спасибо!

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете попробовать поместить блок try-кроме внутри for.Вы будете ловить ошибку за строку вместо файла:

   for line in file_read:
      try:       
          print(eval(line), file=file_write)
      except NameError:
          print("Bad Expression", file=file_write)
...