如何通过python代码执行awk命令

时间:2013-09-01 10:49:09

标签: python linux

我有一组我想要处理的数据。我试图运行一个python代码在linux中执行“awk”命令。无论我如何尝试不同的论点或功能,这一切都无效。

我尝试了两种不同的方式,但它们都没有用。我不知道为什么

1)

#!/usr/bin/env python
import subprocess as sp
cmd = "awk, '{print $2 '\t' $4 '\t' $5 '\t' $6}', B3LYPD.txt"
args = cmd.split(',')
p = sp.Popen(args, stdin = sp.PIPE, stdout = sp.PIPE, stderr = sp.PIPE )

2)

#!/usr/bin/env python
import subprocess as sp
cmd = "awk, '{print $2 '\t' $4 '\t' $5 '\t' $6}'"
args = cmd.split(',')
p = sp.Popen(args, stdin = sp.PIPE, stdout = sp.PIPE, stderr = sp.PIPE )
c = p.communicate('B3LYPD.txt')
print c

2 个答案:

答案 0 :(得分:5)

虽然我同意这实际上最好用Python完成,而不是调用awk。如果你真的需要这样做,那么实际的错误就是你的awk。

#!/usr/bin/env python
import subprocess as sp
args = ["awk", r'{OFS="\t"; print $2,$4,$5,$6}', "B3LYPD.txt"]
p = sp.Popen(args, stdin = sp.PIPE, stdout = sp.PIPE, stderr = sp.PIPE )
print(p.stdout.readline()) # will give you the first line of the awk output

编辑:修正了缺失的报价。

答案 1 :(得分:0)

您可以使用三引号定义命令,然后在子进程中使用 shell = True

Nunit