импортировать переменные из текстового файла и использовать его в уравнении - PullRequest
0 голосов
/ 28 августа 2018

Как я могу импортировать данные из .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()

Ответы [ 5 ]

0 голосов
/ 28 августа 2018

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

with open("values.txt") as infile:
    k, t, r = map(float, infile.read().split())
0 голосов
/ 28 августа 2018

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

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 голосов
/ 28 августа 2018

Я предпочитаю хранить .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 голосов
/ 28 августа 2018

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

Например:

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 голосов
/ 28 августа 2018

Прочитать файл. Разделяйте на \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

...