栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

OSX:定义一个直接指向Python脚本的新URL处理程序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OSX:定义一个直接指向Python脚本的新URL处理程序

经过一番混乱之后,我设法使它在OSX下工作。

这就是我的做法:

在Applescript脚本编辑器中,编写以下脚本:

on open location this_URL    do shell script "/scripts/runLocalCommand.py '" & this_URL & "'"end open location

如果要确保从特定的外壳程序运行Python(就我而言,我通常使用tcsh,并且有一个.tcshrc文件定义了一些我想访问的环境变量),那么行可能想要成为:

do shell script "tcsh -c "/scripts/localCommand.py '" & this_URL & "'""

我想在python脚本中进行所有实际处理-
但是由于URL处理程序在OSX中的工作方式,他们必须调用应用程序捆绑包而不是脚本,因此在Applescript中执行此操作似乎是最简单的方法做吧。

在脚本编辑器中,另存为“应用程序捆绑包”

查找已保存的应用程序捆绑包,然后打开目录。找到Info.plist文件,然后将其打开。添加以下内容:

<key>CFBundleIdentifier</key><string>com.mycompany.Applescript.LocalCommand</string><key>CFBundleURLTypes</key><array>  <dict>    <key>CFBundleURLName</key>    <string>LocalCommand</string>    <key>CFBundleURLSchemes</key>    <array>      <string>local</string>    </array>  </dict></array>

在最后两行之前,应该是:

</dict></plist>

其中可能需要更改三个字符串:

com.mycompany.Applescript.LocalCommandLocalCommandlocal

其中的第三个是处理程序ID,因此URL为local:// something

因此,然后将其传递给Python脚本。

这就是我为此得到的:

#!/usr/bin/env pythonimport sysimport urllibarg = sys.argv[1]handler, fullPath = arg.split(":", 1)path, fullArgs = fullPath.split("?", 1)action = path.strip("/")args = fullArgs.split("&")params = {}for arg in args:    key, value = map(urllib.unquote, arg.split("=", 1))    params[key] = value


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号