在python脚本中运行命令并将结果存储在csv文件或tup中

2024-06-17 08:17:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从python脚本运行OpenStack api。我使用subprocess模块来实现这一点。在

output = subprocess.check_output('nova-manage vm list',shell=True,)
print output

“nova manage vm list”给出了一个表,其中的列为“instance、node、type、state、launched、image、kernel、ramdisk、project、user、zone、index”。在

^{pr2}$

上面是运行“nova manage vm list”命令的输出示例。在

我只需要检查输出的前4列。我该如何从完整的表中只获取前4列?我应该如何将这4列的值存储在csv文件中并访问它?。在

我是一个python脚本的初学者,对我的问题知之甚少。在

谢谢


Tags: 模块instance脚本apitrueoutputopenstackmanage
1条回答
网友
1楼 · 发布于 2024-06-17 08:17:06

第一个选项是直接使用OpenStack API Python绑定作为@dorvak suggested in the comment。在

如果要使用子进程,则可以使用str.split()解析nova-manage的输出,并使用{a2}将前四列写入csv文件:

import csv
import sys
from subprocess import Popen, PIPE

file = sys.stdout # or use with open('output_filename', 'wb') as file:
p = Popen(['nova-manage', 'vm', 'list'], stdout=PIPE)
next(p.stdout) # skip header line
csv.writer(file).writerows(line.split()[:4] for line in p.stdout)
p.stdout.close()
p.wait()

相关问题 更多 >