Строковое чтение операций и выполнение eval () для каждой строки - PullRequest
0 голосов
/ 08 апреля 2020

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

import math
with open('operations.txt', 'r') as f:
    line = f.read()
    line = (eval(line))
    line = (eval(line))
    print(line)

В моем текстовом файле есть две строки

  • 2 + 2 * 4 (работает по назначению)
  • 4 / 2 (когда я добавляю его к python, он вылетает из программы целиком)

Может кто-нибудь дать мне какой-нибудь совет. Как я могу прочитать все строки и сделать eval() для каждой из них? Я пытаюсь сделать это универсальным, поэтому, если, скажем, я даю 10 различных операций, я бы хотел получить результат для каждой из них и сохранить их в другом текстовом файле.

1 Ответ

0 голосов
/ 08 апреля 2020

Полагаю, вы хотите перебрать строки в вашем файле:

with open('operations.txt', 'r') as f:
    for line in f.readlines()
        result = eval(line)
        ...

См. Также Python do c для этой топи c.

Комментарий : причина сбоя в том, что он пытается оценить весь файл как одну команду, то есть eval('2+2*4\n4/2'), которая не является Python кодом

...