Синтаксическая ошибка рядом с неожиданным токеном `('при использовании нескольких входных потоков из zcat в подпроцессе Python
Я запустил это в Python 3.5:
import subprocess
subprocess.run(
'some_command --option <(zcat some_file_1.gz) <(zcat some_file_2.gz)',
shell=True
)
Получил эту ошибку:
/bin/sh: -c: line 0: syntax error near unexpected token `('
Любая помощь будет оценена!
2 ответа
Замена процесса с использованием <(...)
не определен в POSIX. Вы должны использовать что-то вроде Bash. Вы можете пройти executable="/bin/bash"
запустить команду, используя bash.
subprocess.run('cat <(echo hoo)', shell=True, executable="/bin/bash")
По умолчанию вызывается оболочка /bin/sh
и он не поддерживает процесс замены (<(...)
синтаксис), который является функцией Bash.