块中的Python块

时间:2015-05-10 15:51:58

标签: python bash sh

我正在尝试在python中读取ls -a命令,因此输出看起来像这样: [[.][..][DIR1][DIR2][FILE1]] 到目前为止的代码是:

t=[]
import sh
lsa=sh.ls("-a")
for sor in lsa:
    t.append(sor)
print(t)

输出现在是这样的:

['. .. FILE1 FILE2\n']

(Sh是我用来执行bash命令的模块)

4 个答案:

答案 0 :(得分:4)

Don't parse the output of ls。标准库函数os.listdir生成您想要的列表(除了它不包括...的条目 - 但 几乎总是你的行为想要)(另外,如果你需要它,你必须自己排序)。

>>> import os
>>> sorted(os.listdir("."))
['.ICE-unix', '.Test-unix', '.X0-lock', '.X11-unix', '.XIM-unix', ...]

答案 1 :(得分:1)

zwol是对的 - 你应该使用print "[" + "".join("[{}]".format(file) for file in os.listdir('.')) + "]"

要获得您想要的格式,您应该使用

print "[[" + "][".join(os.listdir('.')) + "]]"

def get_absolute_url(self):
    return reverse('article_view', {'slug': self.slug })

答案 2 :(得分:0)

只需将结果放在列表中,然后再附加它们:

for sor in lsa:
    t.append(list(sor))

如果您的结果实际上是一个字符串的结果,请尝试:

lsa = lsa.split()
for sor in las:
    t.append(list(sor))

答案 3 :(得分:0)

您可以使用subprocess module

from subprocess import check_output

a=check_output(["ls", "-a"])
print a.split()