将Fabric命令的输出保存在列表中,其中每一行都是一个列表元素

时间:2015-02-17 01:21:34

标签: python fabric

是否可以将列表作为Fabric命令的输出?

类似于ls -la(但它可以是任何命令),其中每一行都保存为列表的条目;所以我可以在以后循环使用它:

mylist=[]
mylist=run('ls -la')

for each item in mylist:
    print item

现在,命令的输出被发送到列表,一次一个char,导致一些完全无法管理的事情。

我正在使用Fabric,因为我在远程计算机上运行这些命令

1 个答案:

答案 0 :(得分:2)

“run”的输出实际上是一个“string”(fabric.operations._AttributeString),你可以使用rsplit方法将输出拆分为list的格式

from fabric.api import *

mylist = run("ls -al").rsplit("\n")
for item in mylist:
    print item

但是,上面的代码使用“\ n”作为行分隔符,它可以覆盖大多数情况,但是,也有一些平台使用“\ r”作为行分隔符,您需要处理小心。