Python / Unix os.system:谁能告诉我为什么在使用os.system执行时使用awk的这段代码不起作用?

时间:2019-05-02 04:37:47

标签: python unix subprocess os.system

我在Unix系统中使用这段代码已经有一段时间了,在正常的命令行上运行时,它工作得很好。但是,为了一个项目并学习如何通过Python执行Unix命令,我试图使用Python中的os.system()命令运行它。

总体数据结构有5列和1500行,目标是替换第4列($ 4)中大于2.706的值,然后继续将它们保存到file2.txt中,同时保持文件中的所有其他值相同。 / p>

os.system("awk '{print $1,$2,$3,$5,($4>=2.706)? -999 : $4}' file1.txt > file2.txt")

从此代码中,尝试从python脚本执行后,收到消息无效的语法

由于我是Python的新手,我相信我必须从代​​码的那一侧开始丢失语法中的某些内容,但是我一生都无法弄清楚。任何帮助将不胜感激。


尝试使用相同的代码,但使用子流程模块而不是os.system:

arg1 = "awk '{print $1,$2,$3,$5,($4>=2.7059553)\? -999 \: $4}' phenotypes.txt > replacetest.txt"
subprocess.run(arg1, shell=TRUE)

此代码还为arg1命令的创建提供了无效的语法响应。

(代码正在Linux2的Python 2.7.5中运行。)

0 个答案:

没有答案