Как запустить линукс шелл программу с несколькими агрументами из питона?

466 просмотра
0
0 Комментариев

Как запустить linux shell программу с несколькими аргументами из питона? Пробовал os, subprocess, неясно как ввести аргументы. Программа BBMap.


Добавить комментарий

3 Answers

Python Опубликовано 09.12.2018
0

судя по приведённым примерам, так и пишите, как в командной строке (в случае os.system):

os.system("программа опция1 опция2 аргумент1 аргумент2 ...")

Добавить комментарий
0

Метод subprocess.run принимает первым параметром список аргументов, необходимых для запуска скрипта.

Стоит отметить, что метод run появился начиная с версии Python 3.5. Если необходима поддержка ранних версий, вы можете воспользоваться методом subprocess.call

Пример:

#!/usr/bin/env python3
 
import subprocess
 
 
def main():
    print('subprocess.run:')
    print(subprocess.run(["bash", "example.bs", "1", "2", "42"]))
    print()
 
    print('subprocess.call:')
    print(subprocess.call(["bash", "example.bs", "1", "2", "42"]))
 
 
if __name__ == "__main__":
    main()

example.bs:

#!/usr/bin/env bash
 
echo $@

Результат:

$ ./main.py
subprocess.run:
1 2 42
CompletedProcess(args=['bash', 'example.bs', '1', '2', '42'], returncode=0)
 
subprocess.call:
1 2 42

Добавить комментарий
0

import subprocess
 
subprocess.check_call(['программа', 'аргумент 1', 'argument 2'])

код запускает программа из $PATH, передавая ей аргумент 1 в качестве первого аргумента и argument 2 в качестве второго аргумента. Если программа завершается с ошибкой (не нулевой возвращаемый код), то check_call() выбрасывает исключение.

Каждый элемент списка это отдельный аргумент. Shell неявно не используется поэтому мета-символы такие как пробелы не разбивают аргументы или например $a не нужно экранировать.

Если программа это shell скрипт, то необходимо добавить соответствующий shebang, например, #!/bin/sh в самом начале файла и сделать скрипт исполняемым: chmod +x программа. Чтобы не указывать путь к программа, файл должен лежать в одной из директорий, указанных в $PATH переменной окружения (echo $PATH).

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up