Python代码将在启动时运行,但不会在Raspberry Pi上创建CSV文件

Python代码将在启动时运行,但不会在Raspberry Pi上创建CSV文件,python,csv,raspberry-pi,gpio,autostart,Python,Csv,Raspberry Pi,Gpio,Autostart,我有一个python代码,它从传感器读取数据,并创建一个CSV文件,将数据写入该CSV文件。在代码中,我还添加了GPIO,通过闪烁LED和按下按钮关闭Raspberry Pi来显示正在运行的代码。我的目标是在Raspberry Pi开机时运行此代码,让它创建CSV文件,并在按下按钮时将其关闭 当我在终端上运行代码时,代码会按预期工作,这意味着我可以运行代码,让它创建CSV文件,然后使用按钮将其关闭。我遇到的问题是,代码将在引导时启动,但它不会创建CSV文件。我知道代码正在运行,因为LED会闪烁。

我有一个python代码,它从传感器读取数据,并创建一个CSV文件,将数据写入该CSV文件。在代码中,我还添加了GPIO,通过闪烁LED和按下按钮关闭Raspberry Pi来显示正在运行的代码。我的目标是在Raspberry Pi开机时运行此代码,让它创建CSV文件,并在按下按钮时将其关闭

当我在终端上运行代码时,代码会按预期工作,这意味着我可以运行代码,让它创建CSV文件,然后使用按钮将其关闭。我遇到的问题是,代码将在引导时启动,但它不会创建CSV文件。我知道代码正在运行,因为LED会闪烁。它也不允许我在使用按钮时关闭它

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

我启动程序的方法是在路径/home/pi/.config/autostart上创建一个.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)

...

大家好,欢迎来到这个平台!看起来您需要在raspberry的一开始就运行这个命令。为此,我建议您将命令放在
/etc/rc.local

例如,只需将您的命令放在其中,但请注意,您的脚本将阻止rc.local。为了避免这种情况,可以通过在命令末尾附加一个符号来分离进程

文件内容如下所示:

/etc/rc.local

sudo /usr/bin/python3 /home/pi/Collect_Temp.py &
sudo /usr/bin/python3 /home/pi/Collect_Temp.py > /home/pi/Desktop/CollectTempResults.txt 2>&1 &
如果您的命令创建了某种类型的输出,我建议您在稍后可以捕获的位置打印输出

/etc/rc.local

sudo /usr/bin/python3 /home/pi/Collect_Temp.py &
sudo /usr/bin/python3 /home/pi/Collect_Temp.py > /home/pi/Desktop/CollectTempResults.txt 2>&1 &
供参考,请参阅


我希望能有所帮助。谢谢你,祝你安全!:)

你好,艾登,欢迎你!如果您确定代码正在运行,但没有创建CSV文件,我怀疑问题不在于启动程序的方法,而在于代码本身。您可能想在问题中添加一些关于这方面的细节,您实际上在哪里查找输出文件?您没有为它指定完整的路径名,因此我不确定它将在哪里结束-可能在
/root/logs/
..@Benp44中,谢谢您的评论。代码似乎没有什么问题,因为当我在终端中运行代码时,它按预期工作。该代码能够创建CSV文件。只有在启动时运行代码时,它才不会创建CSV文件。@jasonharper我正在与代码相同的路径上查找创建的CSV文件。在这种情况下,它为什么会出现在那里?它将位于相对于运行autostart程序的任何系统进程的当前工作目录的某个位置,而该目录肯定不会位于您的主目录附近。