2013-08-27 2 views
1

En ce moment, je travaille avec un fichier txt avec cette information:Python comment modifier la valeur d'une variable à la volée

["corrector", "Enabled"] 
["Inteligencia", "Enabled"] 

Puis dans mon programme python il charge que les données à la très beggining, de cette façon:

for line in open("menu.txt", 'r'): 
    retrieved = json.loads(line) 
    if retrieved[0] == "corrector": 
    corrector = retrieved[1] 
    if retrieved[0] == "Inteligencia": 
    Inteligencia = retrieved[1] 

jusqu'à présent, il fonctionne parfaitement, mais comme cela est un bot de chat, je veux rendre possible de changer la valeur de cette variable directement à partir du chat et j'ai essayé ce code quand je l'appelle "! Activer le correcteur" dans le chat. Cela fonctionne aussi, et si j'ouvre le fichier .txt je peux voir la valeur qui a déjà été changée. Le vrai problème est que python n'a pas semblé accepter que j'ai changé une variable, et il pense toujours qu'il est "désactivé" alors qu'il est déjà "activé". Il ne lira pas la variable comme "activé" jusqu'à ce que je redémarre le programme. Je me demandais s'il existe une option d'actualisation pour les variables ou une solution de contournement pour modifier la valeur d'une variable à la volée et faire durer l'effet sans redémarrage.

+0

duplication possible de [variable dynamique] (http://stackoverflow.com/questions/10963804/dynamic-variable) – Marcin

+3

Les variables ne sont pas liées à leur origine; il semble y avoir une incompréhension fondamentale de ce qu'est une «variable». Vous devez lire le fichier à nouveau. – Izkata

+0

duplication possible de [Comment créer une quantité inconnue de variables en python] (http://stackoverflow.com/questions/17685199/how-to-create-an-unknown-amount-of-variables-in-python) – abarnert

Répondre

2

changer la valeur d'une variable à la volée

Ce code modifie la valeur d'une variable à la volée:

a = 1 
a = 2 

Votre question suggère que vous voulez être en mesure de rechercher une valeur par un nom calculé. La solution est d'utiliser un dict:

mydict = {'corrector':0} 
mydict['corrector'] = 1 

Si vous souhaitez modifier les valeurs dans le fichier, vous aurez besoin d'écrire un nouveau fichier basé sur les données que vous avez. Il semble que vous chargiez json, donc le module json vous aidera avec cela.

+0

ouais, j'utilise json. Donc, le problème est qu'une variable ne peut pas mettre à jour ses informations à partir d'une liste, mais il peut partir d'un dict? C'est ce que j'ai compris de votre réponse. – Saelyth

+0

@Saelyth "une variable ne peut pas mettre à jour ses informations à partir d'une liste mais cela peut provenir d'un dict" ne veut rien dire. Une variable ne met pas à jour ses informations à partir de quoi que ce soit. Une variable obtient une nouvelle valeur via une instruction d'affectation. C'est tout. – Marcin

+0

Ah ok, désolé de savoir comment je peux être à ce sujet. J'apprends juste python comme mon premier langage de programmation et j'apprends principalement des informations que je peux obtenir de google ou de ce site Web. Merci pour la réponse, je vais essayer d'utiliser des dicts à partir de maintenant (enfin, je vais devoir apprendre car je ne savais pas ce que c'était il y a 10 minutes). Merci! – Saelyth

Questions connexes