Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как выполнить программу или вызвать системную команду из Python?

ПрограммированиеData science+3
Анонимный вопрос
Data Science
  · 6,6 K
На Кью задали 1 похожий вопрос
Openstack DevOps and IBM/Informix Certified DBA . Phd in Math (Duality of spaces of...  · 13 сент 2022
Модуль подпроцесса — это рекомендуемый Python способ выполнения команд оболочки. Это дает нам возможность подавлять вывод команд оболочки или связывать входные и выходные данные различных команд вместе, в то же время предоставляя аналогичный os.system()  опыт для основных случаев использования.
(.env) boris@boris-All-Series:~/BayesClassifier$ cat cmdRunPython1.py
import subprocess
list_files = subprocess.run(["ls", "-CRl"])
print("The exit code was: %d" % list_files.returncode)
(.env) boris@boris-All-Series:~/BayesClassifier$ python3 cmdRunPython1.py
.:
total 64
-rw-rw-r— 1 boris boris   733 сен 13 14:04 argMaximum.py
-rw-rw-r— 1 boris boris   118 сен 13 19:34 cmdRunPython1.py
-rw-rw-r— 1 boris boris   116 сен 13 19:36 cmdRunPython2.py
-rw-rw-r— 1 boris boris   115 сен 13 19:41 cmdRunPython3.py
-rw-rw-r— 1 boris boris   176 сен 13 19:25 cmdRunPython.py
drwxrwxr-x 2 boris boris  4096 сен 13 19:35 COPIES
-rw-rw-r— 1 boris boris  2874 сен 13 12:00 GaussProcessRegr.py
-rwxrwxr-x 1 boris boris 16520 сен 13 19:43 hello
-rw-rw-r— 1 boris boris   111 сен 13 19:43 hello.cpp
-rw-rw-r— 1 boris boris  6123 сен 13 15:46 OptimalBayes1.py
-rw-rw-r— 1 boris boris  3026 сен 13 12:20 OptimalBayes.py
./COPIES:
total 32
-rw-rw-r— 1 boris boris  733 сен 13 19:35 argMaximum.py
-rw-rw-r— 1 boris boris  118 сен 13 19:35 cmdRunPython1.py
-rw-rw-r— 1 boris boris  110 сен 13 19:35 cmdRunPython2.py
-rw-rw-r— 1 boris boris  176 сен 13 19:35 cmdRunPython.py
-rw-rw-r— 1 boris boris 2874 сен 13 19:35 GaussProcessRegr.py
-rw-rw-r— 1 boris boris 6123 сен 13 19:35 OptimalBayes1.py
-rw-rw-r— 1 boris boris 3026 сен 13 19:35 OptimalBayes.py
The exit code was: 0
В первой строке мы импортируем модуль подпроцесса, который является частью стандартной библиотеки Python. Затем мы используем функцию subprocess.run() для выполнения команды. Как и os.system(), команда subprocess.run() возвращает код завершения того, что было выполнено. В отличие от os.system(), обратите внимание, что subprocess.run() требует в качестве входных данных список строк, а не одну строку. Первым элементом списка является имя команды. Остальные элементы списка — это флаги и аргументы команды.
Выполнение бинарного кода сгенерированного g++ используя Пайтон модуль.
Чтобы управлять вводом и выводом с помощью subprocess.Popen, нам нужно использовать метод communicate(). В новый файл с именем cat_Popen.py добавьте следующий фрагмент кода:
(.env) boris@boris-All-Series:~/BayesClassifier$ cat cat_Popen.py
import subprocess
useless_cat_call = subprocess.Popen(["cat"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
output, errors = useless_cat_call.communicate(input="Hello from the other side!")
useless_cat_call.wait()
print(output)
print(errors)
(.env) boris@boris-All-Series:~/BayesClassifier$ python3 cat_Popen.py
Hello from the other side!
Специалист МГТУ им. Н. Э. Баумана, Информатика и системы управления  · 14 сент 2022
Если речь об исполняемом exe-файле/сис-команде, можно попробовать такое: import os os.startfile("C:\app.exe") или import subprocess sys_command = "cat test_file.txt" subprocess.run(sys_command) Ответы и примеры есть тут и тут. Читать далее
1 эксперт согласен
Классику мы ценим за вневременную актуальность. Не все, что хорошо, ново, и не все, что...  · 13 сент 2022
По  общему подходу задействуется соответствующая схема обращения к компонентам, иначе говоря, объявляется процесс вызова библиотеки.
Ищите виды исключений, обработка завершений и прочие, все то, корректное выполнение чего, говорит о том, что программист уважает пользователя своего продукта.
Ну и не забудьте вызов библиотечных компонентов 
request
1 эксперт согласен
request здесь вообще не в тему… другой человек ответил совершенно правильно, повторяться не стану.
Ответы на похожие вопросы
Как выполнить программу или вызвать системную команду из Python? — 2 ответа, задан 
С помощью функции run модуля subprocess, в официальной документации приведены примеры того как это можно сделать:
Но если вдруг её окажется мало или она покажется сложной для чтения, на этот случай есть неофициальное руководство:
1 эксперт согласен
Как выполнить программу или вызвать системную команду из Python? — 2 ответа, задан 
Пофигист с большим жизненным опытом, обремененный образованием и личной жизнью... ;)  · 18 июн 2022
Собственно есть 2 пути. Показываю для linux.
Первый ждет завершения вызываемого кода (текущий поток останавливается), а второй просто открывает его в параллельном процессе (текущий поток продолжает работать и появляется новый процесс в задачах). 
Первый использует os 
import os 
os.system('command')
где command - команда операционной системы… Так можно не только запустить что-то на исполнение, но и выполнить, например, копирование, создание каталога и т.д. и т.п. — т.е. любую команду, которую вы введете в терминале.
Второй — через subprocess. Показываю тоже два случая:
import subprocess 
subprocess.Popen(['pcmanfm','/home/alex/.shutter']) # запуск с аргументом 

path = '/home/alex/РабочийСтол/QML на PyQt5.ctb' # имя файла 
subprocess.Popen(['xdg-open']+[path]) # открытие файла в ассоциированной программе
Первый случай - когда просто нужно запустить процесс с параметром, а второй - если нужно открыть файл неизвестной природы в его программе, то используется xdg-open (например: xdg-open <полный путь>). 
Как-то так… Для win - смотри справку по этим методам. Есть и еще способы, но эти самые понятные.