Script em Python - Como executar comandos do linux? [fechadas]

3

Eu tenho que fazer um monte de copiar arquivos, mover, svn check-out comandos, verificação de diretórios etc e eu estou tentando fazer um script para fazer isso por mim. Eu tenho a sintaxe básica do python, mas não tenho certeza de como usar o python para executar comandos do Linux. Eu sei que os comandos linux necessários, por exemplo, sudo apt-get install subversion eu só não sei como envolver o python em torno dele.

Especificamente, alguém poderia dar exemplos sobre como:

  • Verifique se um pacote (como o svn) está instalado, se não, então, instale-o. Eu sei que esta é uma declaração simples, mas não faço ideia de como escrevê-la ...
  • Verifique se uma pasta com um nome específico está instalada, se não criá-la na área de trabalho / algum outro diretório. Semelhante ao acima, eu diria.
  • Mover para um determinado diretório e executar um comando (como se eu quisesse extrair um arquivo .tgz em um determinado diretório)

Há mais, mas eu quero entender os princípios básicos e realmente aprender a executar comandos do Linux usando o script Python. Obrigado pelo seu tempo ~

EDIT: Eu sou especificamente obrigado a usar python

    
por user114638 08.07.2014 / 22:32

1 resposta

5

Você certamente pode fazer tudo usando o material interno do Python de os e submpra módulos.

Uma coisa um pouco complicada seria se você quer que o seu script "interaja" com os programas que você está invocando (como "espere até que ele imprima 'pressione Enter para continuar", então envie um pressionamento de tecla Enter). pode usar o módulo pexpect .

Para um modo de nível mais alto, dê uma olhada na biblioteca Fabric - além de executar comandos locais, ele também permitirá que você execute facilmente código em máquinas remotas via SSH.

Uma pequena amostra de código usando o Fabric:

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

Lê quase como poesia :) Código semelhante no Bash pareceria uma bagunça ininteligível em comparação ...

    
por Sergey 08.07.2014 / 23:07