【问题标题】:How to execute a command in the terminal from a Python script?如何从 Python 脚本在终端中执行命令?
【发布时间】:2016-01-09 00:21:47
【问题描述】:

我想通过 Python 脚本在终端中执行命令。

 ./driver.exe bondville.dat

此命令正在终端打印,但无法执行。

这是我的步骤:

echo = "echo"
command="./driver.exe"+" "+"bondville.dat"
os.system(echo + " " + command)

它应该执行命令,但它只是在终端上打印它。当手动喂食相同的东西时,它正在执行。如何通过脚本执行此操作?

【问题讨论】:

  • 使用子流程模块
  • @PadraicCunningham 我是 python 新手,这个子进程模块对我来说似乎很难处理。这个怎么用?
  • 你想存储输出还是只运行命令?
  • 删除 echo 以实际运行您的命令。现在它只打印你的 command 变量内容

标签: python shell python-2.7 terminal ubuntu-14.04


【解决方案1】:

echo 终端命令回显它的参数,因此将命令打印到终端是预期的结果。

您输入的是echo driver.exe bondville.dat,它是否正在运行您的driver.exe 程序?
如果没有,那么您需要摆脱代码最后一行中的回声:

os.system(command)

【讨论】:

    【解决方案2】:

    可以使用subprocess.check_call模块来运行命令,不需要回显来运行命令:

    from subprocess import check_call
    
    check_call(["./driver.exe", "bondville.dat"])
    

    这相当于从 bash 运行 ./driver.exe bondville.dat

    如果你想得到输出,你可以使用check_outout:

    from subprocess import check_output
    
    out = check_output(["./driver.exe", "bondville.dat"])
    

    在您自己的代码中,您基本上是在回显字符串command,而不是实际运行命令,即echo "./driver.exe bondville.dat",它将在您的shell中输出./driver.exe bondville.dat

    【讨论】:

      【解决方案3】:

      试试这个:

      import subprocess
      subprocess.call("./driver.exe bondville.dat")
      

      【讨论】:

      • “试试这个”的答案没有帮助,因为他们没有说明问题是什么或下次如何解决。
      猜你喜欢
      • 2011-04-13
      • 2020-09-25
      • 2015-12-08
      • 2017-01-15
      • 2018-09-01
      • 2018-05-04
      • 2020-05-14
      • 1970-01-01
      • 2020-05-14
      相关资源
      最近更新 更多