Импорт переменной из файла с динамическим названием Python
Задача такая: Пользователь задает имя файла, задает значение. Значение записывается в переменную, создается файл с заданным именем, переменная записывается в этот файл. Вопрос, как импортировать эту самую переменную из созданного файла, если название не известно.
Я пробовал import f'file.py' и т.п. Оно не работает
При том, что при остановке и запуске я хочу так же импортировать переменную из созданного пользователем файла, но я так же не знаю сам название файла, нужно чтоб все было автоматически
name = input()
file = open(f'{name}.py', 'w')
word = input()
file.write(f'password = "{word}" \n')
nums = input()
file.write(f'numb = "{nums}"')
Ответы (1 шт):
Мне кажется можно воспользоваться дампом. Как пример:
import pickle
import glob
import os
def save_locals_to_pkl(file_path):
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_list = [4, 5, 6]
my_string = "Hello, world!"
# Создаем словарь с локальными переменными
local_vars = {'my_dict': my_dict, 'my_list': my_list, 'my_string': my_string}
# Сохраняем словарь в файл Pickle
with open(file_path, 'wb') as file:
pickle.dump(local_vars, file)
def load_locals_from_folder(folder_path):
# Получаем список файлов в заданной папке с расширением .pkl
pkl_files = glob.glob(os.path.join(folder_path, '*.pkl'))
for pkl_file in pkl_files:
# Загружаем словарь с локальными переменными из каждого файла Pickle
with open(pkl_file, 'rb') as file:
local_vars = pickle.load(file)
# Делаем локальные переменные глобальными
globals().update(local_vars)
# Пример вывода информации о переменных
print(f"Переменные, загруженные из {pkl_file}: {list(local_vars.keys())}")
# Пример сохранения, тут нужно доработать
save_locals_to_pkl('local_vars.pkl')
# Загружаем и восстанавливаем локальные переменные
load_locals_from_folder(r'C:\Users\Amgarak\Desktop')
# Теперь переменные доступны в глобальной области видимости
print(my_dict)
print(my_list)
print(my_string)
И так, сперва мы сохраняем все переменные в файл .pkl. Затем открываем все дампы(все файлы .pkl с любым названием) из заданной папки. После чего добавляем их в глобальную видимость и попутно выводим информацию о новых доступных переменных с которыми можно сразу начать работать.
З.Ы. Вам осталось лишь доработать под ваши хотелки.