Відповіді:
Існує кілька способів зробити це:
Простий спосіб - використання модуля 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"])
Насправді будь-яке питання щодо підпроцесу буде добре прочитане
Ви також повинні заглянути в команду.getstatusoutput
Це повертає кортеж довжиною 2 .. Перше - це ціле число повернення (0 - коли команди успішно виконані), друге - це весь вихід, як буде показано в терміналі.
Для лс
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'")
Це має спрацювати. Я не знаю, як надрукувати вихід в оболонку пітона.
Os.popen () досить просто використовувати, але він застарів , так як Python 2.6. Натомість слід використовувати модуль підпроцесу .
Читайте тут: читання os.popen (команди) у рядок
У зошиті з юпітером можна використовувати магічну функцію !
!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)