gpt4 book ai didi

python - 在 Mac OSX 中运行 python 脚本启动权限问题

转载 作者:行者123 更新时间:2023-12-04 12:38:04 29 4
gpt4 key购买 nike

我有一个简单的 python 脚本,它从我的下载文件夹中移动文件。当我通过终端运行它时,脚本工作正常。当它通过 launchd 运行时会发生问题:

Traceback (most recent call last):
File "/Users/ben/Project/Automation/CleanDownload.py", line 11, in <module>
for f in listdir(downloadFolder):
OSError: [Errno 1] Operation not permitted: '/Users/ben/Downloads/'

任何想法为什么?

最佳答案

这是我用来规避此问题的解决方法。我试图运行一个简单的 shell 脚本,但同样的解决方法也适用于 Python 脚本。总结一下,涉及的步骤是:

  • 创建一个名为 e.g. 的自动化应用程序run-script.app 有一个单独的 bash 脚本,它运行传递给它的任何文件
  • 要么给全自动应用程序全盘访问 通过 安全与隐私 或手动运行一次,然后单击 允许 当 macOS 提示权限时
  • 使用您想要运行的任何脚本调用自动化应用程序

  • 更多细节:
  • 无论您想运行什么脚本,请确保它是可执行的(使用 chmod +x )并且您拥有正确的 #!脚本顶部的行(例如 #!/bin/bash )。在本例中,我将使用位于 ~/scripts/organize-screenshots.sh 的脚本。将屏幕截图从我的桌面移动到我的 Google Drive 目录:
  • #!/bin/bash
    user_dir="/Users/soxley"

    find "$user_dir"/Desktop -name 'Screen Shot *.png' -exec mv {} "$user_dir"/Google\ Drive/pictures/screenshots/ \;
  • 接下来,创建一个 Automator 应用程序:
  • 开通 自动化
  • 点击新建文档
  • 选择 申请
  • 点击选择
  • 选择 实用工具 > 运行 Shell 脚本
  • 选择 传递输入:作为参数
  • 输入 /bin/bash -c "$1"作为脚本的主体(见下面的截图)
  • 点击文件 > 保存 并将应用程序保存到任何您想要的位置(在本例中为 run-script.app)
  • 接下来,运行刚刚手动创建的应用程序以确保它具有所需的权限(您也可以在 安全和隐私 中向新应用程序授予 完整磁盘访问权限 ):
  • 开通 Terminal.app
  • 执行命令 open -a run-script.app organize-screenshots.sh
  • 点击允许 当 macOS 询问应用程序是否可以访问您的桌面时
  • 现在您已准备好在 launchd 中配置您的脚本。使用以下内容更新您的 .plist ProgramArguments :
  • <key>ProgramArguments</key>
    <array>
    <string>open</string>
    <string>-a</string>
    <string>/Users/soxley/scripts/run-script.app</string>
    <string>/Users/soxley/scripts/organize-screenshots.sh</string>
    </array>

    现在您应该能够使用此应用程序作为包装器运行您想要的任何脚本。
    Automator Application Selection
    Automator Application Content

    关于python - 在 Mac OSX 中运行 python 脚本启动权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59234661/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com