使用Python输出要列出的命令

时间:2014-07-18 11:19:40

标签: python linux bash shell

我正在编写自动化脚本,需要运行命令,命令输出应该作为列表捕获。

例如:

# ls -l | awk '{print $9}'
test1
test2

我希望将输出捕获为var = ["test1", "test2"]等列表。

现在我尝试了这个,但它保存为字符串而不是列表:

# Filter the tungsten services
s = subprocess.Popen(["ls -l | awk '{print $9}'"], shell=True, stdout=subprocess.PIPE).stdout
service_state = s.read()

如果有人有任何想法,请指导我。

3 个答案:

答案 0 :(得分:2)

您可以使用

service_states = s.read().splitlines()

但请注意,这很脆弱:文件名可以包含奇数字符(如空格)。

因此,您可能最好使用os.listdir(path),它会为您提供文件名列表。

答案 1 :(得分:0)

您可以根据需要对字符串进行后处理。

string.splitlines()https://docs.python.org/2/library/stdtypes.html#str.splitlines)会将字符串分解为行列表。

如果您需要进一步分割结果,可以使用.split()

答案 2 :(得分:0)

子流程不需要:

a, d , c = os.walk('.').next()
service_state = d + c