Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何运行awk-F\&x27';{打印$2}';Python中的subprocess.Popen内部?_Python_Shell_Python 2.7_Awk_Subprocess - Fatal编程技术网

如何运行awk-F\&x27';{打印$2}';Python中的subprocess.Popen内部?

如何运行awk-F\&x27';{打印$2}';Python中的subprocess.Popen内部?,python,shell,python-2.7,awk,subprocess,Python,Shell,Python 2.7,Awk,Subprocess,我需要在Python的subprocess.Popen中运行一个shell命令 命令是: $virsh dumpxml server1 | grep'源文件| awk-F\''{print$2}' 输出为: /vms/onion.qcow2 我对上述命令有两个挑战: 1) 该命令位于一个循环中,在“server1”中,它是一个具有服务器名称的变量 2) Python正在抱怨KeyError:“print$2” 以下是我到目前为止的情况: proc = subprocess.Popen(["vir

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

命令是: $virsh dumpxml server1 | grep'源文件| awk-F\''{print$2}'

输出为: /vms/onion.qcow2

我对上述命令有两个挑战:

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

2) Python正在抱怨KeyError:“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]

提前感谢。

虽然可以直接从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]

您是否考虑过使用直接访问libvirt内容?谢谢。这是有道理的,但我仍然会遇到一个错误:/bin/sh:-c:0行:在查找匹配的`''/bin/sh:-c:1行:语法错误:意外结束file@GreenTeaTech你说得对,我在本地尝试时已经解决了这个问题,但在我的回答中忘记了(虽然我现在已经编辑了它以进行修复)。问题在于awk中的
-F\'
,python正在“吃”这个``所以你需要逃避它