Импорт переменной из файла с динамическим названием 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 шт):

Автор решения: Amgarak

Мне кажется можно воспользоваться дампом. Как пример:

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 с любым названием) из заданной папки. После чего добавляем их в глобальную видимость и попутно выводим информацию о новых доступных переменных с которыми можно сразу начать работать.

З.Ы. Вам осталось лишь доработать под ваши хотелки.

→ Ссылка