如何在mac上安排py程序每60分钟运行一次(在特定文件夹下)

如何在mac上安排py程序每60分钟运行一次(在特定文件夹下)

我是 Python 新手,我编写了我的第一个程序,并在一天中运行几次。该文件名为 quran_review_scheduler.py,位于我的用户目录“usr/dev/python/learning_python”下的文件夹中。当我想运行此文件时,我打开终端并将目录更改为 learning_python 并运行 python3 quran_review_scheduler.py,它运行良好。现在我想让这个脚本每小时运行一次。

我做了一些研究并发现 launchd - 我读过的 2 个教程是:

https://nathangrigg.com/2012/07/schedule-jobs-using-launchd

https://www.launchd.info/

然后我创建了一个包含以下内容的 plist。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>quran_scheduler</string> <key>ProgramArguments</key> <array> <string>/Users/siraj/Dev/python/learning-python/quran_review_scheduler.py</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>

然后我使用了以下语句:

launchctl load /Users/siraj/Library/LaunchAgents/quran_scheduler.plist

我没有得到任何输出,因此我假设该作业将启动,但它没有启动。然后我明确调用了启动,但什么也没发生。

launchctl load /Users/siraj/Library/LaunchAgents/quran_scheduler.plist

然后,我开始四处寻找是否还有其他问题,然后发现了这个帖子 -如何使 Python 文件在 macOS Sierra 上可执行?

因此,我复制了 quran_review_scheduler.py 并将其命名为 quran_review_scheduler.command。然后我执行 chmod +x quran_review_scheduler.command 使其可执行。然后,我将顶部的 shebang 行更改为指向 python3

#!/usr/bin/env python3

当我双击它时,它抱怨说找不到日期解析器 - 我所知道的只是当我从终端运行程序时没有使用这个python3。然后,通过反复试验,我发现这里还有另一个python3,并将其作为第一行。

#!/Library/Frameworks/Python.framework/Versions/3.8/bin/python3

现在,当我双击该文件时,dateparser 错误消失了,但它抱怨说无法找到与 python 文件存储在同一目录中的 credentials.json 文件。

因此,我的问题是:

  1. 如何在我的 Mac 上找到所有不同的 Python 实例以及如何只有一个版本的 Python3?
  2. 如何从 learning_python 目录运行上述命令文件以便找到 credentials.json 文件
  3. 我的 launchd 配置有什么问题?我如何知道它是否正在运行?

我已经尽力阅读各种资源并自行取得进展,但却遇到了困难,因此非常感谢任何指点。

相关内容