Python格式化问题

时间:2013-08-17 18:24:56

标签: python

我正在编写一个脚本来配置路由器,基本上它将是网页,它会将参数传递给python。目前它只是写入文件并使用exscript来通过ssh

进行编写

例如,这是脚本的调色版本,它从网页接收参数后运行

python myscript.py 4 newfile.txt 

(4和newfile是从网页收到的变量)

然后脚本就像

from sys import argv

script, vlanno, filename = argv
target = open(Filename, 'w')
vlanapply = (int vlan %r) %svino
target.write(vlanapply)

好的,所以这样可行,但问题在于输出数字4的反应是否为vlan no

它出现为int vlan'4'

然后当我尝试使用exscript使用conn.execute将其应用于cisco设备时,它会抛出无效的命令错误,其他非变量命令正常工作。

问题是命令是int vlan 4而不是int vlan'4'

我怎样才能摆脱''?

3 个答案:

答案 0 :(得分:2)

%r字符串格式使用repr。如果参数是一个字符串,结果将用引号括起来,并像在交互式会话中一样进行转义。

您可能希望使用%s代替str来格式化参数。这将消除报价。

顺便说一句,如果您使用的是Python 2.7+(或Python 3+),您可以使用更好的语法来写入文件:

script, vlanno, filename = argv
with open(filename, 'w') as target:
    print >> target, 'int vlan', vlanno # or print('int vlan', vlanno, file=target) in Python 3

答案 1 :(得分:1)

问题出在声明中:

vlanapply = (int vlan %r) %svino

%r打印vino代表的实际对象 - 在本例中为字符串。

将上述行替换为:

vlanapply = 'int vlan %s'  % vino

这应该可以正常工作。

参考this问题,该问题可以很好地描述python中%r %s 指令

答案 2 :(得分:0)

int('4') should give you the integer 4 instead of the string '4'.