【问题标题】:running shell command using python使用python运行shell命令
【发布时间】:2014-07-29 05:29:45
【问题描述】:

我正在尝试在 python 中运行一个 shell 脚本并将输出保存到一个变量中。

这是我的python脚本:

import os
os.system("sh ./temp.sh > outfile.txt") 
file = open("outfile.txt", "r") 
var = file.readLine() 
#I do more stuff using var

现在这有效。但是,有没有更有效的方法来做到这一点?输出到文件然后再次从文件中读取似乎有点低效。我的目标是直接从 os 命令的输出中设置 var 。例如 var = os.system(unix 命令)。 (我知道这不起作用)。

【问题讨论】:

标签: python shell


【解决方案1】:

您可以使用subprocess 模块将输出存储在变量中,从而使您的脚本如下所示:

import subprocess
var = subprocess.check_output(['sh', 'temp.sh']) //

subprocess 模块基本上允许您执行作为参数数组传递给它的 shell 命令,因此像执行 ls -l 您需要将其作为 ['ls', '-l'] 传递,类似地您可以如上所述将调用传递给您的脚本。你可以阅读subprocesshere

【讨论】:

    【解决方案2】:

    您可以使用subprocess 模块

    import subprocess
    output = subprocess.check_output(//unix command here)
    

    【讨论】: