在 python 中传递 os.system 中的整型变量和字符串

pass integer variable and string in os.system in python

我收到 SyntaxError: invalid syntax or TypeError: unsupported operand type(s) for +: 'int' and 'str' .这里portnum为整数,其余为字符串或

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

字符串连接的每个元素之间需要一个 +,而不是逗号,无论这些元素是字符串文字还是命名变量。如果使用逗号,则会创建一个元组。如果什么都不用,就会出现语法错误。另外,请务必将整数 portnum 发送到 str(),以便将其连接为字符串。

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

此外,不要将文字字符串 'cmdstr' 发送到 os.system();那不是您要在命令行中输入的内容。您想发送该变量指向的值,就像您打印它时所做的那样:

os.system(cmdstr)