Python скриптинг - Как выполнять команды linux? [закрыто]

Мне нужно сделать кучу копирования, перемещения файлов, команды svn check out, проверки директорий и т.д., и я пытаюсь сделать скрипт, который сделает это за меня. У меня есть базовый синтаксис python, но я не уверен, как использовать python для выполнения команд linux. Я знаю команды linux, например, sudo apt-get install subversion, но не знаю, как обернуть их вокруг python.

В частности, кто-нибудь может привести примеры того, как:

  • Проверить, установлен ли пакет (например, svn), если нет, то установить его. Я знаю, что это простой if-выражение, но не знаю, как его написать...
  • Проверить, установлена ли папка с определенным именем, если нет, то создать ее на рабочем столе/в другом каталоге. Аналогично вышеописанному, я бы предположил.
  • Переместиться в определенный каталог и выполнить команду (например, я хочу извлечь .tgz файл в определенный каталог)

Есть еще много чего, но я хочу понять основные принципы и на самом деле научиться выполнять команды linux с помощью сценариев python. Спасибо за ваше время~

EDIT: От меня конкретно требуется использовать python

3
задан 9 July 2014 в 00:51

1 ответ

Конечно, можно сделать все с помощью встроенного материала Python от os и подпроцесс модули.

А немного хитрая вещь состояла бы в том, если Вы хотите, чтобы Ваш сценарий "взаимодействовал" с программами, Вы вызываете (как, "ожидают, пока это не печатает 'Нажмите Enter для продолжения', затем отправьте ему Ввести нажатие клавиши) - для которого можно использовать модуль pexpect .

Для немного высокоуровневого пути взглянули на библиотека Fabric - помимо выполнения локальных команд, это также позволило бы Вам легко выполнять код на удаленных машинах через SSH.

небольшая выборка А кода с помощью Матрицы:

if "dirty" in api.local("git describe --dirty", capture=True):
    print colors.red("""Your repository is dirty, commit any changes first""")
    sys.exit(1)

Чтения почти как поэзия:) Подобный код в Bash был бы похож на непонятную путаницу в сравнении...

5
ответ дан 9 July 2014 в 00:51

Другие вопросы по тегам:

Похожие вопросы: