Как я могу импортировать словарь, созданный одним сценарием, в другой сценарий? - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть один python файл с именем testings.py, в этом файле я получаю словарь, используя веб-очистку соответствующих данных. Заполнение словаря занимает несколько минут.

Что я хотел бы сделать, вместо того, чтобы копировать весь сценарий в мой другой python сценарий с именем webscraper.py, а затем запустить все оба действующих сценария каждый раз, когда я запускаю webscraper.py, вместо этого импортируйте словарь из скрипта testing.py во второй скрипт webscraper.py, а затем сохраняйте эти минуты при каждом запуске webscraper.py.

Время от времени мой словарь устаревает, и в этом случае я просто запускаю testings.py перед запуском webcraper.py. Есть ли способ сделать то, что я спрашиваю?

Еще одна вещь, на которую следует обратить внимание: в начале testings.py у меня есть my_dict = {}, и только в конце сценария my_dict заполняется полностью. Поэтому, когда я импортирую его, я хочу импортировать его полностью заполненную версию, как если бы скрипт выполнялся полностью.

Ответы [ 2 ]

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

Вы можете сохранить словарь несколькими способами в файл (см. https://docs.python.org/3/library/pickle.html или https://docs.python.org/3/library/json.html и как писать файлы, https://docs.python.org/3/library/io.html?highlight=open ) и затем прочитайте его из другого сценария.

Или вы можете просто импортировать сценарий очистки в другой сценарий и вызвать оттуда функцию очистки, возвращая результат - но это только решение, если вы не возражайте против того, чтобы проводить очистку там и тогда, и вы не собираетесь повторно использовать результаты более ранней очистки.

0 голосов
/ 05 февраля 2020

Когда я запускаю этот скрипт:

from tester import my_dict
print ('Now in second script.')
print (my_dict)

На самом деле он запускает скрипт с именем tester.py, а затем импортирует и печатает my_dict.

my_dict = {}
for x in range (20) :
    for y in range (10) :
        my_dict [x] = y
print (my_dict)
input ('All done now.')
...