我有一个循环,我在其中更改列表,然后使用format
构建一个新字符串。使用此行时
strCommand = strCommand.format(*strCmdVars)
我发现当我遍历我的数据时,字符串不会更新,strCommand
将保留其原始值。但是当我把它改成这个
strCmd = strCommand.format(*strCmdVars)
事情开始按预期工作了。
我偶然发现了一些奇怪的东西,或者我第一次做错了什么?
这是在Windows 7上的Python 3.4.3版下运行的。
以下是一些可以使用的细节:
strCommand = "show run {0} access-list {1}"
strCmdVars = ["ipv6","FWG31"]
在实际的脚本中,我使用append like this
初始化strCmdVars strCmdVars.append(parts1)
strCmdVars.append(parts2)
然后当我在循环结束时遍历我正在读取的文件(这是parts1和parts2的值来自的地方)时我做了
strCmdVars[0]=parts1
strCmdVars[1]=parts2
为简化起见,我的例子是外推法。当我循环遍历文件时,strCmdVars可以保存以下任何值:
IPv6的FWG31
IPv4中,FWG32
IPv4中,FWG33
IPv6的FWG34
IPv4中,FWG31
等
我确认strCmdVars的值确实在使用dbp调试时更改为正确的值,并且strCommand的值没有更改并保持其初始值。
答案 0 :(得分:0)
我刚刚意识到我做错了什么以及为什么我的解决方案有效,有时候你只需要睡觉就可以搞清楚:-P好了跟着这里。
strCommand = "show run {0} access-list {1}"
的初始值
然后我使用format函数将{0}和{1}替换为实际值,例如“IPv6”和“FWG32”。
现在strCommand = "show run IPV6 access-list FWG32"
看问题???不再有{0}和{1}! :-D