如何在Python的subprocess.Popen中运行awk-F'{print$2}?

2024-04-29 04:28:41 发布

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

我需要在Python的subprocess.Popen中运行shell命令。

命令是: $virsh dumpxml服务器1 | grep“源文件”| awk-F“{打印$2}”

输出为: /vms/洋葱.qcow2

我对上面的命令有两个挑战:

1)该命令位于循环中,在您看到“server1”的地方,它是一个具有服务器名称的变量。

2)Python抱怨KeyError:“打印$2”

以下是我目前掌握的情况:

proc = subprocess.Popen(["virsh dumpxml {0} | grep 'source file' | awk -F\' '{print $2}'".format(vm)], stdout=subprocess.PIPE, shell=True)

stdout = proc.communicate()[0]

提前谢谢。


Tags: 命令服务器stdoutprocshellgrepsubprocesspopen
1条回答
网友
1楼 · 发布于 2024-04-29 04:28:41

虽然可以直接从python中使用libvirt,但您的问题是{是格式字符串,并且在awk脚本中也环绕着print $2,因此必须对这些大括号进行转义,如

proc = subprocess.Popen(["virsh dumpxml {0} | grep 'source file' | awk -F\\' '{{print $2}}'".format(vm)], stdout=subprocess.PIPE, shell=True)
stdout = proc.communicate()[0]

相关问题 更多 >