Ответы:
Есть несколько способов сделать это:
Простой способ - использовать модуль os:
import os
os.system("ls -l")
С помощью модуля подпроцесса можно достичь более сложных вещей: например:
import subprocess
test = subprocess.Popen(["ping","-W","2","-c", "1", "192.168.1.70"], stdout=subprocess.PIPE)
output = test.communicate()[0]
os.system("nslookup gmail.com")
возвращает только последнюю строку 0
, но я хочу получить полный ответ.
Я предпочитаю использовать модуль подпроцесса:
from subprocess import call
call(["ls", "-l"])
Причина в том, что если вы хотите передать некоторую переменную в скрипт, это дает очень простой способ, например, взять следующую часть кода
abc = a.c
call(["vim", abc])
call(["eog", "1breeproposal.png", "-f"])
Фактически, любой вопрос о подпроцессе будет хорошо прочитан
Вам также следует изучить commands.getstatusoutput
Это возвращает кортеж длиной 2 .. Первое - это возвращаемое целое число (0 - когда команды успешны), второе - это весь вывод, как будет показано в терминале.
Для ls
import commands
s=commands.getstatusoutput('ls')
print s
>> (0, 'file_1\nfile_2\nfile_3')
s[1].split("\n")
>> ['file_1', 'file_2', 'file_3']
import os
os.system("echo 'hello world'")
Это должно работать. Я не знаю, как распечатать вывод в оболочке python.
Os.popen () довольно просто использовать, но он устарел , так как Python 2.6. Вместо этого вы должны использовать модуль подпроцесса .
Читайте здесь: чтение os.popen (команды) в строку
В блокноте jupyter вы можете использовать волшебную функцию !
!echo "execute a command"
files = !ls -a /data/dir/ #get the output into a variable
Чтобы выполнить это как .py
сценарий, вам нужно будет использоватьipython
files = get_ipython().getoutput('ls -a /data/dir/')
выполнить сценарий
$ ipython my_script.py
Вы можете импортировать модуль 'os' и использовать его так:
import os
os.system('#DesiredAction')
для python3 используйте подпроцесс
import subprocess
s = subprocess.getstatusoutput(f'ps -ef | grep python3')
print(s)