2016-12-02 6 views
0

Я получаю SyntaxError: недопустимый синтаксис или TypeError: неподдерживаемый тип операнда (s) для +: «Int» и «ул» . Здесь PortNum является целым числом, а остальные строки илипередача целой переменной и строки в os.system в питона

#!/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

Вы опуская кучу символов '+' при назначении 'cmdstr'. – TigerhawkT3

ответ

2

Вам нужен +, а не запятой, между каждым элементом конкатенации строк, независимо от того, являются ли элементы строковых литералов или именованные переменные. Если вы используете запятую, вы создаете кортеж. Если вы ничего не используете, вы получите синтаксическую ошибку. Кроме того, обязательно отправьте целое число portnum на str(), чтобы его можно было объединить в виде строки.

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

Кроме того, не посылают символьной строки 'cmdstr' в os.system(); это не то, что вы входите в командную строку. Вы хотите отправить значение, что переменная указывает на, так же, как вы делали, когда вы печатали:

os.system(cmdstr) 
+0

Фантастический !! Это сработало. благодаря –