Executando o comando periodicamente e salvando a saída em um arquivo CSV

0

Estou executando algum comando em um emulador SDN. O comando é:

$ py ap1.params['frequency']

Isso me dá uma saída de valor único (flutuante). Como posso escrever um pequeno script python ou usar um único comando para executar o comando acima a cada 2 segundos e anexar cada saída a um arquivo csv.

    
por Muhammad Asif Khan 05.11.2017 / 10:53

2 respostas

0

Disclaimer: Eu não sei nada sobre python, eu apenas combino o que é dito nas fontes dadas abaixo. Eu não posso testá-lo e há uma mudança que isso está terrivelmente errado.

  1. Escreva um loop while com um comando sleep que chama regularmente seu comando: fonte

    import time; while True: ap1.params['frequency']; time.sleep(2)
    

    Isso, de fato, não chamará o comando a cada dois segundos, mas esperará dois segundos entre cada execução - você pode querer ajustar o tempo de espera.

  2. Execute o loop e redirecione a saída para um arquivo anexando-o: fonte

    py 'import time; while True: ap1.params['frequency']; time.sleep(2)' >> output.csv
    

    Existem outras maneiras de redirecionar a saída, claro que o próprio python também é totalmente capaz de fazer isso - veja a fonte para abordagens alternativas.

por dessert 05.11.2017 / 11:42
0

Você pode (meio que enganar) usar o comando watch :

watch -n 2 -p "( py ap1.params[\'frequency\'] >>output.csv )"

Você não verá muito na tela que o relógio será exibido, exceto a mudança de horário, porque a saída real é redirecionada. Observe o comando dado para assistir incluindo o redirecionamento precisa ser agrupado entre parênteses. Além disso, com ou sem watch , provavelmente as aspas simples no comando ( 'frequency' ) devem ser escapadas com \ para que não sejam removidas pelo shell.

Veja man watch para mais informações.

    
por rai42 05.11.2017 / 12:47