Синтаксическая ошибка рядом с неожиданным токеном `('при использовании нескольких входных потоков из 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.

Другие вопросы по тегам