Пара ключей ключа анализа в текстовом файле

Я новичок в Python, и я ищу, как разбирать файл.txt. Мой.txt файл - это элемент с информацией о вычислении, например:

myfile.txt

var0 = 16
var1 = 1.12434E10
var2 = -1.923E-3
var3 = 920

Как читать значения и помещать их в myvar0, myvar1, myvar2, myvar3 в python?

Ответ 1

Я предлагаю хранить значения в словаре вместо отдельных локальных переменных:

myvars = {}
with open("namelist.txt") as myfile:
    for line in myfile:
        name, var = line.partition("=")[::2]
        myvars[name.strip()] = float(var)

Теперь myvars["var1"] к ним как к myvars["var1"]. Если имена всех допустимых имен переменных python, вы можете поместить это ниже:

names = type("Names", [object], myvars)

и получить доступ к значениям, например, names.var1.

Ответ 3

Как предлагает @kev, модуль configparser - это путь.

Однако в некоторых сценариях (немного уродливо, я признаю), но очень простой и эффективный способ сделать это - переименовать myfile.txt в myfile.py и сделать from myfile import * (после исправления typo var 0var0)

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

Ответ 4

Я лично решил это, создав файл.py, который просто содержит все параметры в качестве переменных - затем сделал:

include PARAMETERS.py

в программных модулях, которым нужны параметры.

Это немного уродливо, но ОЧЕНЬ просто и легко работать.

Ответ 5

Если в одной строке есть несколько значений, разделенных запятыми, введите здесь код для разбора:

    res = {}                                                                                                                                                                                             

    pairs = args.split(", ")                                                                                                                                                                             
    for p in pairs:                                                                                                                                                                                      
        var, val = p.split("=")                                                                                                                                                                          
        res[var] = val