chamando script de perl / python / ruby e recuperando a saída [closed]

1

Eu herdei um script tcsh "master" que funciona e extrai linhas de arquivos com dados usando 'zcat' canalizado para 'grep' e alguns outros comandos / scripts. As linhas extraídas contêm números. Está ficando difícil fazer os cálculos que preciso fazer nos números no script tcsh, portanto, estou procurando uma alternativa que reutilize o grep em funcionamento e outros comandos.

Eu poderia facilmente fazer os cálculos em C. Obter os números no programa sem criar muitos arquivos intermediários é o desafio, assim como fazer os pipes da saída de um comando para outro.

Como posso transformar o script "mestre" em um script perl, ruby ou python? Eu realmente não achei os exemplos em perl e ruby muito mais legíveis do que o script tcsh original. Em python, as chamadas os.system não retornam o conteúdo, apenas um status de saída, o mesmo problema que eu teria com o uso de C.

Existe uma maneira melhor do que usar o os.system em python para obter informações de programas, scripts ou combinações de programas? Ou devo dar uma olhada em perl ou rubi?

    
por Susan 08.09.2014 / 14:31

1 resposta

0

Usar os.system() no Python para fazer com que a saída chame um comando não é o caminho a seguir. Para comandos únicos, você pode usar a função check_output() do módulo subprocessado.

Na sua situação, eu daria uma olhada no plumbum que permite fazer coisas em python como :

from plumbum.cmd import zcat, grep
chain = zcat["your_file_name.gz"] | grep["-i", "pattern"]
result = chain()

E, em seguida, obtenha os números de que você precisa da variável result (uma string).

Você precisará instalar plumbum usando pip ou easy_install

    
por 08.09.2014 / 14:53