Захват результата bash-скрипта в программу Python - PullRequest
1 голос
/ 16 мая 2019

Мне интересно использовать список каталогов, созданных в скрипте bash под именем list_of_dirs_in_bash, и передать его списку в моей общей программе Python.

Итак, после выполнения в моем скрипте Python:

subprocess.call("my_bash_script.sh")

сделать что-то вроде:

list_of_dirs_in_python = list_of_dirs_in_bash

и тогда я смогу работать с этим списком в Python.Конечно, это не сложно, но все, что я нашел, это наоборот (от Python до bash).Благодаря.

1 Ответ

2 голосов
/ 16 мая 2019

[Python 3.Docs]: подпроцесс. check_output (args, *, stdin = Нет, stderr = Нет, shell = False, cwd = Нет, кодировка = Нет, ошибки = Нет, universal_newlines = None, timeout = None, text = None) - это то, что вам нужно (самый простой вариант) для этой задачи, поскольку она вернет процесс ' stdout .
Оттуда декодируйте и разделяйте возвращаемое значение (строку), чтобы получить отдельные строки.

Пример (сделал все из командной строки):

[cfati@cfati-ubtu16x64-0:~/Work/Dev/StackOverflow]> ls
a.py        q049058700  q049654022  q051914879  q052090348  q053230645  q053781370  q054269984  q055357490  q056055568
q038171543  q049499683  q051073129  q052051111  q052720961  q053626481  q054243176  q054306561  q055537728  sizes_mingwi686.exe
[cfati@cfati-ubtu16x64-0:~/Work/Dev/StackOverflow]>
[cfati@cfati-ubtu16x64-0:~/Work/Dev/StackOverflow]> python3 -c "import subprocess;list_of_dirs_in_bash = subprocess.check_output(['ls']).decode().split('\n');print(list_of_dirs_in_bash)"
['a.py', 'q038171543', 'q049058700', 'q049499683', 'q049654022', 'q051073129', 'q051914879', 'q052051111', 'q052090348', 'q052720961', 'q053230645', 'q053626481', 'q053781370', 'q054243176', 'q054269984', 'q054306561', 'q055357490', 'q055537728', 'q056055568', 'sizes_mingwi686.exe', '']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...