2017-09-01 1 views
0

J'ai une boucle où je change une liste, puis en utilisant format créer une nouvelle chaîne. Lorsque vous utilisez cette ligneProblème avec le format et les listes

strCommand = strCommand.format(*strCmdVars) 

je trouve que la chaîne ne serait pas mise à jour que j'itérés mes données, strCommand resterait avec sa valeur d'origine. Cependant quand je l'ai changé à ceci

strCmd = strCommand.format(*strCmdVars) 

les choses ont commencé à fonctionner comme prévu. Est-ce que j'ai trébuché sur quelque chose d'étrange, ou faisais-je quelque chose de mal la première fois? Ceci est en cours d'exécution sous la version Python 3.4.3 sous Windows 7. Voici quelques détails à travailler avec:

strCommand = "show run {0} access-list {1}" strCmdVars = ["ipv6","FWG31"]

Dans le script réel, j'initialiser strCmdVars en utilisant comme ajouter cette

strCmdVars.append(parts1) strCmdVars.append(parts2)

Puis, en parcourant un fichier dans lequel je lis (qui correspond à la valeur de parts1 et parts2) à la fin de la boucle, je fais

strCmdVars[0]=parts1 strCmdVars[1]=parts2

Mes exemples sont des extrapolations à des fins de simplification. Comme je suis Boucler dans le fichier strCmdVars pourrait contenir une de ces valeurs:
ipv6, FWG31
ipv4, FWG32
ipv4, FWG33
ipv6, FWG34
ipv4, FWG31
etc.
je vérifié que les La valeur de strCmdVars était en effet changée en valeurs correctes, en utilisant le débogage dbp, et que la valeur de strCommand ne changeait pas et restait à sa valeur initiale.

+1

Très étrange. Pourriez-vous éditer votre question avec un exemple concret (valeurs pour 'strCmdVars' et' strCommand') afin que nous puissions l'exécuter et le tester de notre côté? –

+0

Edité la question et fourni beaucoup plus de détails, avec des exemples. – Siggi

Répondre

0

Je me suis juste rendu compte de ce que j'avais fait de mal et de la raison pour laquelle mon remède a fonctionné, parfois il suffit de dormir dessus pour le comprendre: -P OK, suivez-moi ici.
La valeur initiale de strCommand = "show run {0} access-list {1}"
puis j'utilise la fonction de format pour substituer {0} et {1} avec des valeurs réelles, disons "IPv6" et "FWG32".
Maintenant strCommand = "show run IPV6 access-list FWG32"
Voir le numéro ??? Plus de {0} et de {1} !!! :-D