как обновить глобальную переменную в python

В python у меня есть функция, которая возвращает список последних ссылок (в папки) на веб-сайте. У меня также есть другая функция, которая загружает последние файлы из этих папок. Я планирую каждый раз запускать этот скрипт. У меня есть глобальный список со ссылками на папки, которые функция загрузки обращается каждый раз, когда она выполняется для последних папок. Я хочу обновить этот глобальный список каждые пять дней и сохранить его в течение следующих 5 дней. Я запускаю код, пока он не обновится.

Это примерно так:

list = ["link1", "link2",...] def update(): #code to update list return list def download(list): #code to download from links 

Поэтому я хочу, чтобы функция обновления запускалась каждые 5 дней (я знаю, как это сделать) и функцию загрузки для ежедневной работы. Итак, как я могу сохранить список, возвращенный из update () static в качестве глобального списка, пока он не будет обновлен снова?

EDIT: Позвольте мне попытаться пояснить:

Я запускаю это в понедельник:

 list = ["link1", "link2"] def update(): #code to update list return list #--> list = ["link1", "link2", "link3"] def download(list): #code to download from links 

это отлично работало, список был обновлен и использован в download ().

Я запускаю это во вторник:

 list = ["link1", "link2"] #update() won't run today, only runs every 5 days def update(): #code to update list return list #--> list = ["link1", "link2", "link3"] def download(list): #code to download from links 

Я перезапустил свой код, но теперь в списке нет link3 с понедельника. Как сохранить ссылку link3 в списке в течение следующих 5 дней, пока я не обновляю список?

благодаря

3 Solutions collect form web for “как обновить глобальную переменную в python”

Используйте global оператор. Но нет необходимости в global для изменяемых объектов, если вы их модифицируете на месте.

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

 lis = ["link1", "link2",...] def update(): global lis #do something return lis 

Пример соски:

 import pickle def update(): lis = pickle.load( open( "lis.pkl", "rb" ) ) # Load the list #do something with lis #modify it pickle.dump( lis, open( "lis.pkl", "wb" ) ) #save it again 

Для повышения производительности вы также можете использовать модуль cPickle .

Дополнительные примеры

Обычное объявление переменной сделает его локальным.
Используйте глобальное ключевое слово, чтобы сделать его рендеримым как глобальное.

Просто напишите список в файл и получите доступ к нему, прочитав его позже.

Если вы не хотите самостоятельно запускать код, вы можете использовать cron-job, чтобы сделать это за вас.

 def read_file(filename): f = open(filename).read().split() lis = [] for i in f: lis.append(i) return lis def write_file(filename,lis): f = open(filename,"w") for i in lis: f.write(str(i)+'\n') 

Пока он объявлен в основной программе и не входит в объем функции, вы должны быть в порядке, чтобы манипулировать своей переменной list оттуда (ваш комментарий) просто отлично. Если вы хотите инициализировать его как глобальное, чтобы изнутри метода, вы можете использовать global ключевое слово, чтобы расширить область охвата всей программы

 list = ["link1", "link2",...] def update(): list.append("link25") return list 

добавит ссылку25 в глобальный список, как вы хотели

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

вы можете записать элементы в своем списке в файл, выполнив это

 for item in thelist: thefile.write("%s\n" % item) 

источник

  • Python: как сделать кросс-модульную переменную?
  • Невозможно изменить глобальные переменные в функции с помощью инструкции exec ()?
  • Глобальные переменные Python Django
  • Почему сброс глобального значения python не вступает в силу
  • создать глобальную функцию в python
  • Создание глобальной переменной в python 3 из функций
  • В Python, почему list автоматически глобально?
  • Глобальные переменные в рекурсии. питон
  • Изменение глобальных переменных из метода внутри класса
  • В Python что такое глобальное утверждение?
  • Глобальная переменная с импортом
  •  
    Interesting Posts for Van-Lav

    Разбор одного столбца из csv в текстовый файл с использованием python

    Python TimedRotatingFileHandler не вращается в полночь, пока в файл журнала не будет записано что-то новое. Как это исправить?

    Отображение цветной карты с почтовыми индексами в R или Python

    атрибуты автокласса и экземпляра

    Apache Spark выдает исключение NullPointerException при обнаружении отсутствующей функции

    Прочитайте все содержимое ini-файла в словаре с помощью Python

    Матрица замешательства с количеством классифицированных / ошибочных экземпляров на ней (Python / Matplotlib)

    Отображение изображения с консоли в Python

    Доступ к mysql XAMPP через Python

    Получить MD5-хэш больших файлов в Python

    django: django.core.exceptions.AppRegistryNotReady: приложения еще не загружены

    Должны ли модули библиотеки Python начинаться с #! / Usr / bin / env python?

    Меркурийные скрипты с питоном

    Сортировка списка в Python с использованием результата сортировки другого списка

    Как я могу преобразовать уранд python в строку?

    Python - лучший язык программирования в мире.