Скрипт Python выполняет команды в терминале


Я читал это где-то некоторое время назад, но не могу показаться, чтобы найти его. Я пытаюсь найти команду, которая будет выполнять команды в терминале и затем выводить результат.

например: скрипт:

command 'ls -l'

это будет результат выполнения этой команды в терминале

6 61

6 ответов:

есть несколько способов сделать это:

простой способ-это использование модуля ОС:

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]

Я предпочитаю использовать модуль подпроцесса:

from subprocess import call
call(["ls", "-l"])

причина в том, что если вы хотите передать некоторую переменную в скрипте, это дает очень простой способ, например, взять следующую часть кода

abc = a.c
call(["vim", abc])

на самом деле любой вопрос о подпроцессе будет хорошо читать

вы также должны изучить команды.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']

The ОС.к popen() довольно просто использовать, но он был устаревшим с Python 2.6. Вы должны использовать подпроцесс модуль.

читать здесь: чтение ОС.popen(команда) в строку

import os
os.system("echo 'hello world'")

Это должно работать. Я не знаю, как распечатать вывод в оболочку python.