使用Python列出命令的输出
我正在写一个自动化脚本,这个脚本需要运行一个命令,并把命令的输出结果保存成一个列表。
比如说:
# 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)
,这个方法会给你一个文件名的列表。