Как добавить определенный список в другой файл python и сохранить его - PullRequest
0 голосов
/ 30 апреля 2020

Мне нужно изменить элементы в списке, сохраненном в другом python файле

файле A.py

items = ['A','B','C']

файле B.py

import A

A.items.append('D')

это работает, но когда я перезапускаю скрипт, он переключается на предыдущую версию.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Вам нужно сохранить данные в файле, чтобы сохранить их.

В этом сценарии у меня есть список элементов в файле A, файл B добавляет «D» в список, а затем добавляет его в текстовый файл.

Вы можете распечатать текстовый файл в файле A после запуска файла B, чтобы увидеть список новых элементов. Новый список будет сохранен как new_items

Если вы запустите файл B несколько раз, он добавит список более одного раза.

Файл A:

items = ['A','B','C']

#prints out the txt file
with open("items.txt","r") as f:
    new_items = f.read()
    new_items = new_items.split()
    print(new_items)
    f.close()

Файл B :

import A

#Adds 'D' to the items list and stores it as a new variable
A.items.append('D')
items = A.items

#Writes the data to a txt file
with open('items.txt', 'a') as f:
    f.write(str(items))
0 голосов
/ 30 апреля 2020

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

Если ваш items будет списком строк, вы можете использовать более легкое решение, например:

#a.py
import os, ast

items = ['A','B','C']

file = "data.txt" # the file we will write our data in

if os.path.exists(file): # if our file exists
    with open(file, "r") as f: # open it in 'r'ead mode
        items = ast.literal_eval(f.read()) # read it and evalute
else: # if our file doesn't exists
    with open(file, "w") as f: # open it in 'w'rite mode
        f.write(str(items)) # write str(items) into file
#b.py
import a

a.items.append("D")

with open("data.txt", "w") as f: # open our file in 'w'rite mode
    f.write(str(a.items)) # save a.items

В качестве общего решения вы также можете использовать модуль pickle или json для сохранения списков или других объектов.


Документы:

ast.literal_eval , открыто , os.path

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