Модуль подпроцесса — это рекомендуемый 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() требует в качестве входных данных список строк, а не одну строку. Первым элементом списка является имя команды. Остальные элементы списка — это флаги и аргументы команды.
Несколько других примеров
(.env) boris@boris-All-Series:~/BayesClassifier$ cat cmdRunPython2.py
import subprocess
list_files = subprocess.run(["df","-Th"])
print("The exit code was: %d" % list_files.returncode)
(.env) boris@boris-All-Series:~/BayesClassifier$ python3 cmdRunPython2.py
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 3,2G 2,2M 3,2G 1% /run
/dev/sda5 ext4 183G 118G 56G 68% /
tmpfs tmpfs 16G 297M 16G 2% /dev/shm
tmpfs tmpfs 5,0M 4,0K 5,0M 1% /run/lock
/dev/sda3 ext4 1,4G 174M 1,1G 14% /boot
tmpfs tmpfs 16G 0 16G 0% /run/qemu
tmpfs tmpfs 3,2G 124K 3,2G 1% /run/user/1000
The exit code was: 0
(.env) boris@boris-All-Series:~/BayesClassifier$ cat hello.cpp
#include <iostream>
int main()
{
std::cout << "Running binary code via Python" << std::endl;
return 0;
}
(.env) boris@boris-All-Series:~/BayesClassifier$ g++ -o hello hello.cpp
(.env) boris@boris-All-Series:~/BayesClassifier$ cat cmdRunPython3.py
import subprocess
list_files = subprocess.run(["./hello"])
print("The exit code was: %d" % list_files.returncode)
(.env) boris@boris-All-Series:~/BayesClassifier$ cat cmdRunPython3.py
import subprocess
list_files = subprocess.run(["./hello"])
print("The exit code was: %d" % list_files.returncode)
(.env) boris@boris-All-Series:~/BayesClassifier$ python3 cmdRunPython3.py
Running binary code via Python
The exit code was: 0
No comments:
Post a Comment