Python / Unix os.system: Кто-нибудь может сказать мне, почему этот фрагмент кода, использующий awk, не работает при исполнении с os.system? - PullRequest
0 голосов
/ 02 мая 2019

Я некоторое время работал с этим фрагментом кода в системах Unix, и он прекрасно работает при работе в обычной командной строке.Тем не менее, ради проекта и изучения того, как выполнять команды Unix через Python, я пытаюсь запустить его с помощью команды os.system () в Python.

Общая структура данных имеет 5 столбцов и 1500 строки цель состоит в том, чтобы заменить значения, превышающие 2,706 в столбце 4 ($ 4), а затем перейти к сохранению их в file2.txt, сохраняя все остальные значения в файле такими же.

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.

(Код выполняется в Python 2.7.5 в Linux2.)

...