comment mettre à jour la variable globale en python
En python, j'ai une fonction qui retourne une liste des derniers liens(de dossiers) sur un site web. J'ai aussi une autre fonction qui télécharge les derniers fichiers de ces dossiers. J'ai l'intention d'exécuter ce script tous les jours. J'ai une liste globale avec le dossier des liens que la fonction de téléchargement accède à chaque fois qu'il s'exécute pour les derniers dossiers. Je veux mettre à jour cette liste globale tous les cinq jours, et de garder statique pour les 5 prochains jours, j'ai exécuter le code jusqu'à ce qu'il les mises à jour.
Son un peu comme ceci:
list = ["link1", "link2",...]
def update():
#code to update list
return list
def download(list):
#code to download from links
Donc je veux la fonction de mise à jour pour exécuter toutes les 5 jours(je sais faire) et la fonction de téléchargement pour exécuter tous les jours. Alors, comment puis-je garder la liste retournée par la mise à jour() statique, comme la liste globale jusqu'à ce qu'il est de nouveau mis à jour?
EDIT:
Permettez-moi de tenter de préciser:
Je lance ce lundi:
list = ["link1", "link2"]
def update():
#code to update list
return list #--> list = ["link1", "link2", "link3"]
def download(list):
#code to download from links
cela a bien fonctionné, la liste a été mise à jour et utilisé en download().
Je lance ce mardi:
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
J'ai redémarré mon code, mais maintenant, la liste n'a pas link3 à partir de lundi. Comment puis-je garder link3 dans la liste pour les 5 prochains jours jusqu'à ce que j'ai mise à jour de la liste?
Grâce
OriginalL'auteur Vaibhav Aggarwal | 2013-06-25
Vous devez vous connecter pour publier un commentaire.
Utilisation
global
déclaration. Mais il n'y a pas besoin deglobal
pour mutable objets, si vous êtes en les modifiant en place.Vous pouvez utiliser des modules comme
pickle
pour stocker votre liste dans un fichier. Vous pouvez charger la liste lorsque vous souhaitez utiliser et de le stocker en arrière après avoir fait vos modifications.Pickle exemple:
Pour de meilleures performances, vous pouvez également utiliser le cPickle module.
D'autres exemples
Je suppose que vous avez besoin pour utiliser les modules comme des cornichons pour stocker vos objets de la liste, voir mon jour de réponse.
J'ai ajouté un cornichon liées exemple.
merci, j'ai décidé d'utiliser pickle depuis son plus efficace
Aller pour cPickle ensuite, c'est peut-être jusqu'à 1000 fois plus rapide que
pickle
.OriginalL'auteur Ashwini Chaudhary
Normal de la déclaration de la variable qui va faire local.
L'utilisation du mot clé global pour rendre le rendu global.
Il suffit d'écrire la liste dans un fichier et l'accès en lecture à partir de là plus tard.
Si vous ne voulez pas de soi exécuter le code que vous pouvez utiliser cron job de le faire pour vous.
j'ai écrit une simple lecture d'écrire du code.espérons que cette aide.
OriginalL'auteur rocker_raj
Tant qu'il est déclaré dans le programme principal et non pas dans le champ d'application de la fonction, vous devez être bien manipuler votre
list
variable à partir de là (votre commentaire) très bien. Si vous souhaitez initialiser mondiale à partir de l'intérieur de la portée d'une méthode, vous pouvez utiliser leglobal
mot-clé à en élargir la portée pour l'ensemble du programmeajouter link25 à la liste globale que vous vouliez
Si vous voulez que votre liste soit persistant entre les pistes, vous pouvez l'enregistrer dans un fichier et de le charger à partir de ce fichier ou de l'enregistrer dans une base de données et de les charger à partir d'une base de données si vous en avez besoin pour travailler sur plusieurs machines
vous pouvez écrire des articles dans votre liste dans un fichier en faisant cela,
source
OriginalL'auteur Stephan