Python格式问题

2024-06-24 12:26:35 发布

您现在位置: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没有

它显示为int vlan“4”

当我尝试使用exscript连接执行对于cisco设备,它抛出一个无效的命令错误,其他非变量命令工作正常。你知道吗

问题是命令是int vlan 4不是int vlan“4”

我怎样才能摆脱''?你知道吗


Tags: 文件命令版本脚本网页target路由器色调
3条回答

问题在声明中:

vlanapply = (int vlan %r) %svino

%r打印vino表示的实际对象—在本例中是一个字符串。你知道吗

将上面的行替换为如下内容:

vlanapply = 'int vlan %s'  % vino

这应该能正常工作。你知道吗

请参阅this问题,该问题提供了python中%r%s指令的良好描述

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

%r字符串格式使用repr。如果参数是字符串,结果将被括在引号中,并像在交互式会话中一样转义。你知道吗

您可能希望使用%s,它使用str格式化参数。这将消除引用。你知道吗

顺便说一下,如果您使用的是Python2.7+(或Python3+),则可以使用更好的语法来写入文件:

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

相关问题 更多 >