2017-09-25 89 views
0

我想自动创建在我们的设备VLAN,但我的脚本抛出这个错误:类型错误:只能拼接元组(而不是“STR”)

tn.write(cmd + "\n") 
TypeError: can only concatenate tuple (not "str") to tuple. 
vlannumbers = int(input("Enter the number for vlans :")) 
for i in range(2,vlannumbers): 
    cmd = (("/cfg/l2/vlan "), i) 

    tn.write(cmd + "\n") 
    cmd1 = "apply" 
    tn.write(cmd1 + "\n") 
    print "ok" 
    tn.close() 
+1

该代码是在正确的格式 – sarfraz

+0

这是什么? 'cmd =((“/ cfg/l2/vlan”),i)'如果'i = 0',那么它应该显示什么? –

+0

如果我= 0它不应该做任何事情在我的设备vlan从1开始,我有范围从2 – sarfraz

回答

0

cmd是在你的代码保存的元组值(不是字符串)。例如:

>>> cmd = (("/cfg/l2/vlan "), 2) 
>>> type(cmd) 
<type 'tuple'> # <--- it's tuple 

既然你想它初始化字符串,你应该做的:

cmd = "/cfg/l2/vlan {}".format(i) 
+0

如果我= 4那么cmd必须是/ cfg/l2/vlan 4然后应用它不会发生。 – sarfraz

+0

只要“i”(来自'for'循环)的值为4,它就会工作。尝试在你的循环中添加'print(i)'并且调试 –

+0

感谢每一个工作 – sarfraz

0

字符串连接是string类型的对象之间的连接。

你可以试试这个:

vlannumbers = int(input("Enter the number for vlans :")) 
cmd_base = "/cdg/l2/vlan" 
for i in range(2,vlannumbers): 
    # cmd_base is not affected, 
    # since concatenated string value is stored in `cmd` 
    cmd = cmd_base + "%d"%i 
    tn.write(cmd + "\n") 
    cmd1 = "apply" 
    tn.write(cmd1 + "\n") 
    print "ok" 
    tn.close() 
相关问题