我正在尝试在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命令的模块)
答案 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()