2016-12-02 2 views
0

Je reçois SyntaxError: syntaxe non valide ou TypeError: type d'opérande non supporté (s) pour +: 'int' et 'str' . Ici portnum est entier et le reste sont chaîne oupasse variable de nombre entier et la chaîne en os.system en python

#!/usr/bin/python 
    import getpass 
    import sys 
    import MySQLdb 
    import os  
    os.system('clear') 

    servname = raw_input("What's your server name? ") 
    portnum = input("Your instance port number ? ") 
    usrname = raw_input("What's your user name? ") 
    print( usrname + " is your username ?") 
    passphrase = getpass.getpass("Enter password:")  

    cmdstr="/usr/local/bin/innotop -h " + servname + "-P ", portnum + "-u " + usrname + "-p " + passphrase 

    print(cmdstr) 
    os.system("cmdstr") 
+2

Vous êtes en omettant un tas de symboles '' + lorsque vous attribuez 'cmdstr'. – TigerhawkT3

Répondre

2

Il vous faut un +, pas une virgule, entre chaque élément d'une concaténation de chaîne, indépendamment du fait que les éléments sont des chaînes littérales ou variables nommées. Si vous utilisez une virgule, vous créez un tuple. Si vous n'utilisez rien, vous obtenez une erreur de syntaxe. En outre, veillez à envoyer l'entier portnum à str(), afin qu'il puisse être concaténé en tant que chaîne.

cmdstr="/usr/local/bin/innotop -h " + servname + "-P " + str(portnum) + "-u " + usrname + "-p " + passphrase 

En outre, ne pas envoyer la chaîne littérale 'cmdstr' à os.system(); ce n'est pas ce que vous entrez dans une ligne de commande. Vous voulez envoyer la valeur que les points variables à, comme vous l'avez fait quand vous l'avez imprimée:

os.system(cmdstr) 
+0

Fantastique !! Ça a marché. Merci –