0

0

使用 AppleScript 执行 Python 脚本的完整教程

DDD

DDD

发布时间:2025-10-19 08:37:00

|

530人浏览过

|

来源于php中文网

原创

使用 applescript 执行 python 脚本的完整教程

本教程旨在解决在 macOS 系统上通过 AppleScript 执行 Python 脚本时遇到的问题。我们将提供一种可靠的方法,通过结合 AppleScript、Shell 脚本和 VBA(Visual Basic for Applications),实现在 Excel for Mac 中自动化执行 Python 脚本的需求,并解决可能出现的权限和环境问题。

在 macOS 系统中,使用 AppleScript 执行 Python 脚本可能会遇到各种问题,例如权限不足、环境变量未正确设置等。本教程将介绍一种经过验证的解决方案,该方案结合了 AppleScript、Shell 脚本和 VBA (Visual Basic for Applications),以实现在 Excel for Mac 中自动化执行 Python 脚本。

准备工作

在开始之前,请确保您已安装以下软件和环境:

  1. Anaconda 或 Miniconda: 用于管理 Python 环境。
  2. Excel for Mac: 用于通过 VBA 调用 AppleScript。
  3. macOS 系统: 本教程基于 macOS 环境。

解决方案概述

该解决方案的核心思想是将 Python 脚本的执行委托给 AppleScript,并通过 VBA 从 Excel 调用 AppleScript。为了确保脚本能够正确执行,我们还需要创建一个 Shell 脚本来设置正确的环境变量并关闭 Terminal 窗口。

立即学习Python免费学习笔记(深入)”;

步骤详解

1. 创建 Shell 脚本 (closeterminal.sh)

此脚本用于在 Python 脚本执行完毕后关闭 Terminal 窗口。这对于自动化任务非常有用,可以避免留下不必要的 Terminal 窗口。

在您的工作目录中创建一个名为 closeterminal.sh 的文件,并添加以下内容:

#!/bin/bash

kill `ps -A | grep -w Terminal.app | grep -v grep | awk '{print $1}'`

解释:

  • ps -A:列出所有进程。
  • grep -w Terminal.app:查找包含 "Terminal.app" 的进程。
  • grep -v grep:排除 grep 进程本身。
  • awk '{print $1}':提取进程 ID (PID)。
  • kill:终止指定的进程。

重要: 确保该脚本具有执行权限。您可以使用以下命令赋予执行权限:

仿优购鞋子商城整站 for ECSHOP
仿优购鞋子商城整站 for ECSHOP

ECSHOP仿优购鞋子商城整站源码,程序基于ECSHOP 2.7.3 UFT8版本制作,适合服装,鞋子,家居等商城使用。目前程序未添加广告位,请自行在网站后台进行添加。具体添加方法,请查看SHOPEX5站点的相关教程。 安装方法:1。访问 :域名/install2. 按照程序提示进行安装.3.安装完成后,登陆网站后台.选择数据库管理--数据库备份--数据库还原.,导入之前的数据库。4.后台-模板管

下载
chmod +x closeterminal.sh

2. 创建 AppleScript 文件 (myscript.scpt)

此脚本用于接收来自 VBA 的命令字符串,并在 Terminal 中执行。

在 /Users//Library/Application Scripts/com.microsoft.Excel 目录下创建一个名为 myscript.scpt 的文件(如果目录不存在,请手动创建),并添加以下内容:

on myAppleScriptHandler(paramString)
    tell application "Terminal"
        activate
        do script paramString
    end tell
end myAppleScriptHandler

解释:

  • on myAppleScriptHandler(paramString):定义一个名为 myAppleScriptHandler 的处理程序,它接收一个字符串参数 paramString。
  • tell application "Terminal":告诉 AppleScript 与 Terminal 应用程序交互。
  • activate:激活 Terminal 应用程序。
  • do script paramString:在 Terminal 中执行 paramString 中包含的命令。

注意: 替换 为您的 macOS 用户名。

3. VBA 代码 (Excel for Mac)

在 Excel for Mac 的 VBA 编辑器中,创建一个新的模块,并添加以下代码:

Sub test()

Dim myScriptResult As String
Dim myparams As String
myparams = "source /Users//anaconda3/bin/activate base; python /Users//Documents//.py; /Users//Documents//closeterminal.sh"

myScriptResult = AppleScriptTask("myscript.scpt", "myapplescripthandler", myparams)

End Sub

解释:

  • Dim myScriptResult As String:声明一个字符串变量 myScriptResult,用于存储 AppleScript 的执行结果。
  • Dim myparams As String:声明一个字符串变量 myparams,用于存储要传递给 AppleScript 的命令字符串。
  • myparams = "source /Users//anaconda3/bin/activate base; python /Users//Documents//.py; /Users//Documents//closeterminal.sh":构建命令字符串。
    • source /Users//anaconda3/bin/activate base:激活 Anaconda 的 base 环境。请务必替换 和 Anaconda 的安装路径为您的实际路径。
    • python /Users//Documents//.py:执行 Python 脚本。请务必替换 .py 为您的实际路径和文件名。
    • /Users//Documents//closeterminal.sh:执行 Shell 脚本以关闭 Terminal 窗口。请务必替换 为您的实际路径。
  • myScriptResult = AppleScriptTask("myscript.scpt", "myapplescripthandler", myparams):调用 AppleScript。
    • AppleScriptTask 是一个 VBA 函数,用于执行 AppleScript。
    • "myscript.scpt":指定要执行的 AppleScript 文件的名称。
    • "myapplescripthandler":指定要调用的 AppleScript 处理程序的名称。
    • myparams:传递给 AppleScript 处理程序的参数。

重要:

  • 替换占位符: 将代码中的 、Anaconda 的安装路径、.py 替换为您的实际路径和文件名。
  • 确保 Anaconda 环境已激活: source /Users//anaconda3/bin/activate base 这行代码非常重要,它确保 Python 脚本在正确的 Anaconda 环境中执行。
  • 权限问题: 如果遇到权限问题,请确保您的用户对相关文件和目录具有读取和执行权限。

注意事项和总结

  • 安全性: 在生产环境中,请谨慎使用 kill 命令关闭 Terminal 窗口,因为它可能会意外终止其他正在运行的 Terminal 会话。
  • 错误处理: 建议在 VBA 代码中添加错误处理机制,以便在脚本执行失败时能够及时发现并处理问题。
  • 路径问题: 确保所有路径都是绝对路径,避免出现找不到文件或目录的问题。
  • 环境变量: 确保 Python 脚本所需的任何环境变量都已正确设置。
  • 调试: 如果脚本执行失败,请尝试在 Terminal 中手动执行命令字符串,以便更好地调试问题。

通过结合 AppleScript、Shell 脚本和 VBA,我们可以有效地解决在 macOS 系统上通过 AppleScript 执行 Python 脚本时遇到的问题,并实现在 Excel for Mac 中自动化执行 Python 脚本的需求。希望本教程能够帮助您成功实现您的自动化任务。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

186

2023.09.27

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

463

2023.08.02

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

320

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1502

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

625

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

653

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

610

2024.04.29

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 14.4万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号