Чтение и добавление списка из нескольких файлов

#python #list

#python #Список

Вопрос:

Допустим, у меня есть 3 файла, как показано ниже. mylist.py состоит из списка и функции для добавления в список. main.py получает значение переменной ‘x’ из входных данных и передает его функции addList в mylist.py . И теоретически я хотел бы main2.py чтобы просто распечатать global_list из mylist.py содержит значение для x, которое я только что ввел в main. Очевидно, что это так не работает, и когда я добавляю значение в список через main.py а потом беги main2.py он выведет пустой список. Мне было интересно, как я мог бы решить эту концепцию, где я могу добавлять и получать значения в списке из 2 или более файлов? Спасибо!

mylist.py:

 global_list = []

def addList(x):
    global_list.append(x)
 

main.py:

 import mylist

x = input("value:")

mylist.addList(x)
 

main2.py:

 import mylist

print(list.global_list)
 

Комментарии:

1. Если вам нужно, чтобы данные были видны при разных вызовах скрипта, вам нужно сохранить их в файле или базе данных.

2. @Barmar хм, хорошо. Как бы я реализовал это, используя такой пример?

3. Есть много руководств по чтению и записи файлов из Python, я бы не хотел наступать им на пятки.

4. Используйте json или pickle для сохранения структурированных данных.

Ответ №1:

Поскольку это отдельные файлы и, следовательно, они будут выполняться как несколько процессов Python, нет практического способа сохранить данные в переменных между ними всеми. Для этого наиболее практично использовать постоянное хранилище, такое как файл.

Вот простой пример, в котором мы будем использовать текстовый файл, который разделяет каждый элемент пробелом для представления постоянного списка:

mylist.py:

 data_file = "./mylist.txt"
delimiter = " "

def get_list():
    with open(data_file, "r") as f:
        data = f.read().split(delimiter)
    return data

def set_list(new_list):
    with open(data_file, "w") as f:
        f.write(delimiter.join(new_list))

def append(val):
    cur_data = get_list()
    cur_data.append(val)
    set_list(cur_data)

# other helper functions    
 

main.py:

 import mylist

x = input("value: ")
mylist.append(x)
 

main2.py:

 import mylist

print(mylist.get_list())