импортировать переменные из текстового файла и использовать его в уравнении

1

Как я могу импортировать данные из.txt и указывать их как мои новые переменные? И каждый раз сохраняйте вывод как новый текстовый файл с моими входными переменными и решением.

У меня есть текстовый файл "values.txt", который включает в себя:

k=10
t=20
r=8.5

(разделенные "enter")

и у меня также есть файл python, в котором помещается уравнение: a = k*t/r

пока я выяснил только эти:

txt = open("values.txt").read()
print(txt)    

a = k*t/r
print(a)

txt.close()
  • 0
    Фиксированный формат входного файла? Почему бы просто не иметь три значения в одной строке?
  • 0
    @DYZ У меня сложилось впечатление, что файл values.txt был открыт для получения инструкций о том, как его хранить.
Теги:
variables
import
save

5 ответов

1

В более общем плане вы можете создать значение dict variable_name: значение, которое будет использоваться в ваших уравнениях.

Например:

variables = {}

with open("values.txt") as f:
    for line in f:
        name, value = line.split("=")
        variables[name] = float(value)

k = variables["k"] 
t = variables["t"] 
r = variables["r"] 

a = k*t/r
  • 0
    Обновлено, спасибо
  • 0
    Спасибо за вашу помощь
1

Прочтите файл. Отделим \r\n. Извлеките значения, разделив на =

txt = open("values.txt").readLines()
k = float(txt[0].split("=")[0])
t = float(txt[1].split("=")[0])
r= float(txt[2].split("=")[0])
a = k*t/r
print(a)

txt.close()

Этот метод хорош при работе с меньшими значениями, в противном случае используется csvreader

  • 0
    Спасибо большое за вашу помощь
  • 0
    правильно - например 8.5 :)
0

Я предпочитаю хранить мой .txt как json файл. Мое filename выглядит так:

{ "foo":
    "bar"
}

Отсюда вы можете

import json
#Read JSON data into the datastore variable
if filename:
    with open(filename, 'r') as f:
        datastore = json.load(f)

#Use the new datastore datastructure
print datastore["foo"]
  • 0
    Я тоже попробую, спасибо
  • 0
    Здесь много отличных ответов. Я верю, что JSON - это лучшее руководство, так как вы можете легко делать матрицы и тому подобное.
0

Если у вас есть контроль над форматом входного файла, сделайте его как можно более простым. Поместите все три числа в одну строку (как в 10 20 8.5) и прочитайте с помощью:

with open("values.txt") as infile:
    k, t, r = map(float, infile.read().split())
  • 0
    Это снижает удобочитаемость в файле .txt и не обеспечивает расширяемость.
  • 0
    Это зависит от масштаба проблемы.
Показать ещё 3 комментария
0

Вы можете прочитать каждую строку в файле, итерации по ней. Затем вы можете разбить каждую строку на символ =.

constants = {}
with open('values.txt', 'r') as f:
    for line in f:
        name, val = line.split('=')
        constants[name] = float(val)

>>> constants['a']
10.0
>>> constants['t']
20.0
>>> constants['r']
8.5

Я создал словарь под названием constants который содержит любое количество пар name: value как вам нравится для каждой константы. Тогда все, что вам нужно сделать, это изменить ваши вычисления, чтобы получить их значения из словаря констант.

Это позволяет добавлять столько констант, сколько вам нужно: не жестко кодируя любые переменные, вы добавляете расширяемость.

  • 0
    Спасибо за вашу помощь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню