Linux

為什麼我在 cronjob 和直接 cmd 呼叫中有不同的 Path(os.getcwd()) 行為?

  • April 27, 2020

我嘗試通過 Python3 腳本在 CSV 文件中寫入一些數據。如果我直接在 CMD 中執行它,它工作得很好,但如果我通過 cron 執行它(由 設置crontab -e)它就不起作用。

現在我發現我需要該文件的直接路徑(在我的程式碼中硬編碼為常量字元串)。

但我的第一種方法讓我感到困惑。我執行命令Path(os.getcwd()).joinpath('Data/test.csv')並獲得正確的路徑/home/pi/Documents/Project/Data/test.csv。但是當我通過 cron 執行它時,路徑是/home/pi/Data/test.csv.

該項目位於/home/pi/Documents/Project/。為什麼Path(os.getcwd()).joinpath('Data/test.csv')返回其他路徑,而不是 cmd 直接呼叫?

我可以改變我在 cron 和腳本的命令行呼叫中的相同行為嗎?

編輯

這是我的 crontab 條目:

00 9,15 * * * python3 /home/pi/Documents/Projects/temperatureCheck/temperatureCheck.py

使用以下前綴為您的 crontab 命令添加前綴:

cd /home/pi/Documents/Project && ...

引用自:https://unix.stackexchange.com/questions/582864