定期运行命令并将输出保存到 CSV 文件

定期运行命令并将输出保存到 CSV 文件

我在 SDN 模拟器中运行一些命令。命令是:

$ py ap1.params['frequency']

它给我一个单值(浮点)输出。我如何编写一个小的python脚本或使用单个命令每2秒运行一次上述命令并将每个输出附加到csv文件。

答案1

免责声明:我对 Python 一无所知,我只是结合了下面给出的来源中所说的内容。我无法测试它,而且这很可能是完全错误的。

  1. 编写一个带有睡眠命令的 while 循环,该循环定期调用您的命令:来源

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

    这实际上不是每两秒调用一次命令,但在每次运行之间等待两秒——您可能需要调整睡眠时间。

  2. 运行循环并将输出重定向到附加文件:来源

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

    还有其他方法可以重定向输出,当然 python 本身也完全能够做到这一点 - 请参阅源代码以了解替代方法。

答案2

你可以(有点误)使用该watch命令:

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

除了时间变化之外,您在屏幕上看不到 watch 显示的太多内容,因为实际输出被重定向了。请注意,发送给 watch 的命令(包括重定向)需要用括号括起来。此外,带或不带手表,可能命令 ( 'frequency') 中的单引号应该用 \ 进行转义,这样它们就不会被 shell 删除。

请参阅man watch以了解更多信息。

相关内容