使用Python列出命令的输出

2 投票
3 回答
13695 浏览
提问于 2025-04-18 13:50

我正在写一个自动化脚本,这个脚本需要运行一个命令,并把命令的输出结果保存成一个列表。

比如说:

# 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

你可以根据自己的需要对这个字符串进行后续处理。

string.splitlines() (https://docs.python.org/2/library/stdtypes.html#str.splitlines) 这个方法可以把字符串分割成一行一行的列表。

如果你还需要进一步分割这些结果,可以使用 .split() 方法。

0

不需要使用子进程:

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

你可以使用

service_states = s.read().splitlines()

但要注意,这种方法不太可靠:文件名可能包含一些奇怪的字符(比如空格)。

所以你可能更好用 os.listdir(path),这个方法会给你一个文件名的列表。

撰写回答