从python执行awk命令
我试图从python脚本执行以下从python执行awk命令,python,linux,awk,Python,Linux,Awk,我试图从python脚本执行以下awk命令 awk 'BEGIN {FS="\t"}; {print $1"\t"$2}' file_a > file_b 为此,我尝试使用子流程,如下所示: subprocess.check_output(["awk", 'BEGIN {FS="\t"}; {print $1"\t"$2}', file_a, ">", file_b]) 其中文件a
awk
命令
awk 'BEGIN {FS="\t"}; {print $1"\t"$2}' file_a > file_b
为此,我尝试使用子流程
,如下所示:
subprocess.check_output(["awk", 'BEGIN {FS="\t"}; {print $1"\t"$2}',
file_a, ">",
file_b])
其中文件a
和文件b
是指向文件路径的字符串
从这里,我得到了错误
awk:无法打开>(没有此类文件或目录)
我确信我以错误的方式将参数输入到
子流程中,但我无法找出问题所在。虽然它在您选择的shell中看起来像它,,但在您选择的shell中看起来像它,,可能对您有意思可能对您有意思非常清楚的解释,谢谢!在检查输出的列表中,代码段中只缺少“\u a”文件。我尝试使用check_输出,但它不允许设置标准输出。所以我最终使用了call。@FilipeAleixo啊,有道理它不会。它的help()
文档中有一个设置stderr的示例,所以我认为stdout也可以,但我想不是。更新相应的答案。非常清楚的解释,谢谢!在检查输出的列表中,代码段中只缺少“\u a”文件。我尝试使用check_输出,但它不允许设置标准输出。所以我最终使用了call。@FilipeAleixo啊,有道理它不会。它的help()
文档中有一个设置stderr的示例,所以我认为stdout也可以,但我想不是。相应地更新答案。
with open(file_b, 'wb') as f:
subprocess.call(["awk", 'BEGIN {FS="\t"}; {print $1"\t"$2}', file_a], stdout=f)