2017-09-25 12 views
0

Ich möchte automatisch vlan in unserem Gerät erstellen, aber mein Skript wirft diesen Fehler:Typeerror: kann nur Tupel verketten (nicht „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

der Code ist in richtigen Format – sarfraz

+0

Was ist das? 'cmd = (("/cfg/l2/vlan "), i)' wenn 'i = 0', was soll es dann zeigen? –

+0

wenn i = 0 sollte es nichts in meinem Gerät tun vlan startet von 1 und ich habe Bereich von 2 – sarfraz

Antwort

0

cmd ist Tupel Wert im Code halten (keine Zeichenfolge). Zum Beispiel:

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

Da wollen Sie es als Zeichenfolge initialisieren, sollten Sie tun:

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

wenn i = 4 dann muss cmd/cfg/l2/vlan 4 sein und dann anwenden, das passiert nicht. – sarfraz

+0

Es funktioniert so weit wie der Wert von "i" (von der 'for' Schleife) ist 4. Versuchen Sie,' print (i) 'innerhalb Ihrer Schleife und debuggen –

+0

danke jeder seine Arbeit – sarfraz

0

String Verkettung a zwischen Objekten des Typs string verbinden ist.

Sie können dies versuchen:

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() 
Verwandte Themen