我有一组我想要处理的数据。我试图运行一个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
答案 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