【问题标题】:Need to use a variable in an os.system command in python [duplicate]需要在python的os.system命令中使用变量[重复]
【发布时间】:2015-08-17 09:39:21
【问题描述】:

我是 python 新手,我需要在 os.system 命令中使用一个变量,这是我目前的代码

import os , sys
s = raw_input('test>')

然后我想在os.system 命令中使用变量s,所以我在想os.system("shutdown -s -t 10 -c" 's') 之类的东西

我不想要我只想知道一般情况下的特定命令的答案,但如果您要使用示例,请使用关机

【问题讨论】:

    标签: python os.system


    【解决方案1】:

    然后我想在 os.system 中使用变量 s

    使用string.format 函数。

    os.system("shutdown -s -t 10 -c {}".format(s))
    

    【讨论】:

      【解决方案2】:

      您可以使用os.system 来执行特定的命令,在这种情况下,您可以使用+ 运算符、字符串格式化(.format())、字符串替换或其他方法来连接两个字符串。

      但是,考虑用户输入命令5; rm -rf / 或其他一些malicious 命令的情况。而不是使用os.system,您可能想看看subprocess

      如果您使用子流程,您可能会发现以下示例很方便:

      import subprocess
      s = raw_input('test>')
      subprocess.call(["shutdown", "-s", "-t", "10", "-c", s])
      

      【讨论】:

        【解决方案3】:

        使用subprocess.check_call,传递一个参数列表,你可以在任何你喜欢的地方添加变量:

        from subprocess import check_call
        
        check_call(["shutdown", some_var ,"-s", "-t" "10", "-c"])
        

        【讨论】:

          【解决方案4】:

          os.systemstring 作为参数,因此您可以使用任何修改字符串的内容。例如string formatting:

          os.system('shutdown -s -t 10 -c {0}'.format(s))
          

          【讨论】:

            【解决方案5】:

            在 os.system 旁边传递占位符 "%s 字符串" 应该可以工作。

            os.system() 将在 shell 中执行命令。

            import os
            var = raw_input('test>') # changed "s" variable to "var" to keep clean
            os.system("shutdown -%s -t 10 -c", %(var)) # "var" will be passed to %s place holder
            

            【讨论】:

              【解决方案6】:
              os.system("shutdown -s -t 10 -c" + s)
              
              1. 加号连接两个字符串
              2. s 周围没有使用引号。这样您就可以获得用户输入的值,而不仅仅是文字“s”。

              【讨论】:

                猜你喜欢
                • 2018-05-24
                • 2015-07-02
                • 2021-03-02
                • 1970-01-01
                • 1970-01-01
                • 2021-10-18
                • 2015-01-23
                • 2019-12-01
                • 1970-01-01
                相关资源
                最近更新 更多