Python代码可以在启动时运行,但不能在树莓派上创建CSV文件。

问题描述 投票:0回答:1

我有一个python代码,它从传感器读取数据,并创建一个CSV文件,将数据写入CSV文件。在代码中,我还添加了GPIO,通过闪烁LED灯来显示代码的运行,并有一个按钮来关闭Raspberry Pi。我的目标是,当Raspberry Pi启动时,当我打开电源时,让这段代码运行,让它创建一个CSV文件,并在我按下按钮时关闭它。

当我在终端机上运行时,代码的工作原理是一样的,这意味着我能够运行代码,让它创建一个CSV文件,然后通过按下按钮将其关闭。我遇到的问题是,代码会在启动时启动,但它不会创建CSV文件。我知道代码在运行,因为LED灯在闪烁。当我使用按钮时,它也不允许我关闭它。

这是因为我在启动时代码运行时没有正确的权限吗?

我的方法是通过在路径homepi.configautostart上创建一个.desktop文件来启动程序。在.desktop文件中,我有。

[Desktop Entry]
Type=Application
Name=Start_Collect_Temp
Exec=/usr/bin/python3 /home/pi/Work/Temp_Folder/Collect_Temp.py

我创建CSV文件的方法是使用os库。

import os

...

def init_csv():

    ... 

    try:
        csv_file = open(os.path.join("logs", filename), "w")
        csv_file.write("Date, Time, Current_Temp\n")
    except:
        print("Error creating file: {}".format(filename))
    else:
        print("File {} created...".format(filename))

    return csv_file

...

inf = init_csv()

...

row = "{}, {}, {}\n".format(date, time, curr_temp)
inf.write(row)

...
python csv raspberry-pi gpio autostart
1个回答
0
投票

你好,欢迎来到这个平台! 看起来你需要在树莓的一开始就运行这个命令。为了做到这一点,我建议你把你的命令放在以下位置 /etc/rc.local.

例如,只要把你的命令放在那里就可以了,但是要注意你的脚本会阻塞rc.local。为了避免这种情况,你可以在命令的结尾加上一个安培符来分离进程。

文件的内容会像这样。

etcrc.local

sudo /usr/bin/python3 /home/pi/Collect_Temp.py &

如果你的命令产生了某种输出,我建议你把输出打印在一个以后可以抓到的地方。

etcrc.local

sudo /usr/bin/python3 /home/pi/Collect_Temp.py > /home/pi/Desktop/CollectTempResults.txt 2>&1 &

请看以下内容作为参考 rc.local - 树莓派文档.

我希望对你有所帮助。谢谢你,注意安全! :)

© www.soinside.com 2019 - 2024. All rights reserved.