Правильный способ в Python записать bash для l oop с помощью `subprocess` - PullRequest
0 голосов
/ 07 января 2020

В этот другой SO вопрос Я видел, что этот синтаксис bash при записи for l oop, похоже, не работает в Python:

~ $ for num in {2..4}; do echo $num; done
2
3
4

Так как вместо 4 различных итераций он выполняет одну:

>>> print(subprocess.check_output("for num in {2..4}; do echo $num; done", shell=True).decode())
{2..4}

Почему этот синтаксис не поддерживается в Python?

Я вижу, что этот другой синтаксис действительно поддерживается:

>>> print(subprocess.check_output("for num in 2 3 4; do echo $num; done", shell=True).decode())
2
3
4

1 Ответ

2 голосов
/ 07 января 2020

Post Как использовать оболочку bash с подпроцессным модулем Python вместо / bin / sh показывает, что он использует /bin/sh, но вы можете использовать executable='/bin/bash' для изменения это

import subprocess

print(subprocess.check_output("for num in {2..4}; do echo $num; done", shell=True, executable='/bin/bash').decode())

В конце концов вы можете использовать bash -c "command"

import subprocess

print(subprocess.check_output('bash -c "for num in {2..4}; do echo $num; done" ', shell=True).decode())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...