Запустить терминальную команду и сохранить значения, возвращенные с помощью Python / Django? - PullRequest
1 голос
/ 01 августа 2010

У меня есть вопрос относительно использования Python.

Как запустить команду командной строки с использованием Python?И после выполнения команды, как мне сохранить возвращенные значения?

Например:

user@home:~$: ls -l
drwxr-xr-x 3 root root 4096 ..[etc] home
-rw-r--r-- 1 user user 357 ..[etc] examples.doc

Так что я собираюсь сделать, это запустить команду ls -l и затем сохранитьответ в базу данных с использованием Python.

Я намерен реализовать приведенный выше пример в Django.

Могу ли я узнать, возможно ли это?Какие команды я не могу выполнить?

Как мне это реализовать?

Любые ссылки, учебные пособия, советы приветствуются!

С наилучшими пожеланиями.

Ответы [ 5 ]

2 голосов
/ 18 февраля 2011

reece's answer почти работает, но вам нужно добавить Popen с помощью .communicate ()

так будет:

from subprocess import Popen, PIPE
stdout, stderr = Popen(['echo', 'Hello World!'], shell=False, stdout=PIPE).communicate()

Или в Python 2.7 вы можете использовать:

from subprocess import check_output
stdout = check_output(['echo', 'Hello World!'], shell=False)

См. Подпроцесс: http://docs.python.org/library/subprocess.html

2 голосов
/ 01 августа 2010

Вам необходимо использовать подпроцесс - http://docs.python.org/library/subprocess.html и http://docs.python.org/library/subprocess.html:

from subprocess import Popen, PIPE
stdout, stderr = Popen(['echo', 'Hello World!'], shell=False, stdout=PIPE)
print stdout.split('\n')
1 голос
/ 01 августа 2010

Вы на самом деле не задаете правильный вопрос здесь.Как уже говорили другие, os.system или subprocess.Popen - это ответы на вопрос «как запустить команду оболочки в Python.

Но это не тот вопрос, который вы действительно задаете.То, что вы на самом деле хотите знать, как я могу получить файлы в каталоге?И ответом на этот вопрос является использование os.listdir().См. документацию .

0 голосов
/ 01 августа 2010

Проверьте стандартную модель подпроцесса - у нее есть пример для этого:

http://docs.python.org/library/subprocess.html#replacing-shell-pipeline

0 голосов
/ 01 августа 2010

Посмотрите на функцию os.system.С этим вызовом вы сможете выполнить любую команду, например:

import os
os.system( 'ls -l > file.txt' )

http://docs.python.org/library/os.html#os.system

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...