Python 3.7 - Сохранить и импортировать файл, содержащий Python переменные - PullRequest
0 голосов
/ 02 февраля 2020

Это кажется довольно очевидным / глупым вопросом, но есть несколько спецификаций, которые делают это немного сложнее.

Допустим, у меня есть программа, которая принимает 3 числа от пользователя и выполняет математические процессы для их, чтобы получить результаты. Затем я open("file", "r") записываю эти переменные в файл.

Затем, скажем, другая программа затем import их и использует их для других процессов. Мне нужно иметь возможность импортировать этот file как Python код. Чтобы было понятно: Я не сохраняю текст, я сохраняю код python в файл, который не является файлом .py.

Есть ли способ сохранить и импортировать Python код в и из не .py файла? И как?

РЕДАКТИРОВАТЬ: В файле, который я сохраняю и импортирую, я также сохраняю функции Python. Я не могу просто сохранить сами переменные; Мне нужно, чтобы имена переменных, значения и функции python были сохранены как обычный текст в файле, но когда я импортирую файл, он должен быть проанализирован как Python code.

Ответы [ 2 ]

1 голос
/ 02 февраля 2020

Вероятно, не очень хорошая идея хранить результаты вычислений в виде кода и затем импортировать их из других источников. Вы должны использовать правильный формат данных для хранения результатов - и импортировать их как данные. Используйте JSON или pickle et c.

Однако, если вы хотите выстрелить себе в ногу, Python даст вам инструменты для этого:

Допустим, у меня есть некоторый код в файле temp.txt

number3=30

def f():
    return 'method'

Тогда вы можете сделать это:

with open('temp.txt') as f:
    code = f.read()
    exec(code)

print(number3)
print(f())

Какие выходы:

30
method
0 голосов
/ 02 февраля 2020

Если я понял это правильно, это может быть сделано с помощью функции eval, например, вы сохраняете весь код, который должен быть выполнен, в строку, а затем сохраняете в файл. Строка и eval ее

Однако я должен сказать, что использование eval - плохая (очень плохая) практика, и я бы советовал против нее, если нет другого решения, которое вы можете найти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...