[ラズパイ] 起動時にPythonファイルを実行した際にプログラム内で作成したファイルが見つからない

投稿者: | 2022-09-17

「sample.txt」ファイルを作成するPythonファイル「test.py」を、「/home/user/」内に置きます。

def main():
    path = "sample.txt"
    f = open(path, "w")
    f.close()
    
if __name__ == "__main__":
    main()

直接「test.py」を実行すると同じ階層の「/home/user/」内に「sample.txt」が作成されます。

今度は起動時に「test.py」を実行するようにsystemdを使って設定します。

[Unit]
Description=test

[Service]
ExecStart=/usr/bin/python3 /home/user/test.py
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

起動時に「test.py」を実行するサービスを有効にして再起動します。

先程は同じ階層の「/home/user/」内に「sample.txt」ファイルが作成されていましたが、今回はファイルが見当たらないと思います。

ファイルの作成に失敗したわけではなく、ルートディレクトリ「/」内に「sample.txt」が作成されていました。

※ルートディレクトリとは、階層の一番上にあるディレクトリのことです。

原因は作業ディレクトリの指定がないことでした。

作業ディレクトリは「WorkingDirectory」で指定することができます。

[Unit]
Description=test

[Service]
WorkingDirectory=/home/user/
ExecStart=/usr/bin/python3 /home/user/test.py
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

作業ディレクトリを「test.py」と同じ階層の「/home/user/」と指定することで、起動時の自動実行でも「sample.txt」は「/home/user」内に作成されるようになりました。