如何 运行 awk -F\' '{print $2}' inside subprocess.Popen in Python?

How to run awk -F\' '{print $2}' inside subprocess.Popen in Python?

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

命令是: $ virsh dumpxml server1 | grep 'source file' | awk -F\' '{print $2}'

输出为: /vms/onion.qcow2

我在使用上述命令时遇到了两个挑战:

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

2) Python 抱怨 KeyError: 'print '

这是我目前的情况:

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

stdout = proc.communicate()[0]

提前致谢。

虽然可以直接从 python 使用 libvirt,但您的问题是 { 是格式字符串,并且也在 awk 脚本中包围 print ,所以你必须像

这样逃避那些大括号
proc = subprocess.Popen(["virsh dumpxml {0} | grep 'source file' | awk -F\' '{{print }}'".format(vm)], stdout=subprocess.PIPE, shell=True)
stdout = proc.communicate()[0]