【发布时间】:2020-04-16 17:21:07
【问题描述】:
我想监测我公寓内的空气质量(楼下的邻居是个狂热的吸烟者)。为此,我有一个与 Enviro+ 连接的 Raspberry Pie 3 Model B+。
在终端中,我可以运行测量小粒子的脚本。
python particulates.py 参见。
https://github.com/pimoroni/enviroplus-python/blob/master/examples/particulates.py
然后它运行并在终端中显示数据,如下图所示:(是的,我更擅长乐高积木,而不是编码)。
我有兴趣在文本文件或 csv 中记录数据,所以我在想是否有办法将屏幕上显示的数据直接通过管道传输到 csv 或 txt 文件中。我知道,我可能可以编写一个简单的 Python 脚本,让它变得又好又紧,但是我听到了很多关于在 Linux 中使用 pipping 的赞誉,我想尝试一下。此外,我在一个论坛上看到:
Awk 和 Sed 是您的 Shell 脚本朋友。 在 Linux 中,一切都是文件,Awk 和 Sed 可以写入/编辑文件。 每个 Linux 操作系统都附带了可怕的旧东西,并且可以正常工作。
如果您使用网络服务器,则不需要所有 x11 桌面膨胀的东西,只需一个无头 Linux 操作系统。 轻松将所有这些安装在 128MB 卡上。 Busybox 有一个网络服务器,或者您可以从一堆选项中进行选择。 我使用 shell 脚本和 Awk/Sed 即时重写 CGI/HTML 文件。
来源:https://www.raspberrypi.org/forums/viewtopic.php?t=248733
我在终端中输入了以下内容:
python Particulates.py > data.csv
我也试过了:
python Particulates.py | data.csv
数据显示在屏幕上,创建了一个 csv 文件,但两个选项的 data.csv 都是空的。如果我的理解是正确的,我需要把particles.py的stdout放到data.csv中。那里应该缺少一些东西,因为我得到的与这个 awk/sed 倡导者在论坛上宣传的相差甚远。
有什么线索可以完成这项工作吗?如果我要绘制结果,我应该使用 gnuplot 吗?我可以在同一行中使用它吗,比如在管道链中?
感谢您的帮助。
【问题讨论】:
-
你能把你的代码放在问题中,而不仅仅是一个链接吗?
-
听起来你在写标准错误还是什么?是的,需要minimal reproducible example 中的实际代码。
-
这允许您登录到文件并在终端中查看数据:
python Particulates.py 2>&1 | tee -a data.csv -
你的缓冲模式设置正确了吗?
-
您可以在脚本中将其保存为 csv 文件,而不是将其通过管道传输到命令行。为此,您可以使用
csv模块或pandas
标签: python shell csv pipe raspberry-pi3