Python:迭代shell命令结果的好方法

Python:迭代shell命令结果的好方法,python,shell,command,exec,Python,Shell,Command,Exec,有没有一种“好”的方法来迭代shell命令的输出 我正在寻找类似于python的东西: ls | while read file; do echo $file done 请注意,“ls”只是shell命令的一个示例,它将在多行中返回其结果,因为“echo”只是:对它做些什么 我知道这些替代方案:但我不知道使用哪一个,或者是否有“更好”的解决方案。(事实上,“更好”是这个问题的主要焦点。) 这是为了用python替换一些bash脚本。将返回一个可以解析的字符串调用将简单地重新使用现有的s

有没有一种“好”的方法来迭代shell命令的输出

我正在寻找类似于python的东西:

ls | while read file; do
    echo $file
done
请注意,“ls”只是shell命令的一个示例,它将在多行中返回其结果,因为“echo”只是:对它做些什么

我知道这些替代方案:但我不知道使用哪一个,或者是否有“更好”的解决方案。(事实上,“更好”是这个问题的主要焦点。)

这是为了用python替换一些bash脚本。

将返回一个可以解析的字符串<代码>调用将简单地重新使用现有的stdout/stderr/stdin,并简单地返回进程退出代码。

您可以打开一个管道(请参阅):

与文档中一样,此语法被贬低并替换为更复杂的
subprocess.Popen

from subprocess import Popen, PIPE
pipe = Popen('ls', shell=True, stdout=PIPE)

for line in pipe.stdout:
    print(line.strip())

拖放
shell=True
。这里不需要。@J.F.Sebastian是否需要
shell=True
取决于OP应该替换的bash脚本;对于像
ls~
这样简单的命令,必须传递
shell=True
注意和
from subprocess import Popen, PIPE
pipe = Popen('ls', shell=True, stdout=PIPE)

for line in pipe.stdout:
    print(line.strip())