我正在创建一个OS X Today Widget。为了获得我需要的数据,我使用的是一个由NSTask对象调用的python脚本。
这是调用python脚本并显示其输出的代码:
func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)!) {
let task = NSTask()
let pipe = NSPipe()
task.launchPath = "/usr/bin/arch"
task.arguments = ["-x86_64", "/usr/bin/python", "/Users/tomas/Developement/N_news_reader/NReader1/ahoj.py"]
task.standardOutput = pipe
task.launch()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
var news: String = (NSString(data: data, encoding: NSUTF8StringEncoding) as? String)!
self.widgetLabel.stringValue = news
completionHandler(.NewData)
}
在终端中,我还使用chmod 777 ahoj.py
然而,在运行代码后,Xcode给出了以下错误:
/ usr / bin / python:无法打开文件'/Users/tomas/Developement/N_news_reader/NReader1/ahoj.py':[Errno 1]不允许操作'
答案 0 :(得分:0)
您是否尝试使用sudo并将arch命令放在task.arguments
中像这样:
task.launchPath =“/ usr / bin / sudo” task.arguments = [“arch”,“ - x86_64”,“/ usr / bin / python”,“/ Users / tomas / Distribution / N_news_reader / NReader1 / ahoj.py”]
只要我更改了visudo设置以避免“输入密码”步骤,它就适用于我。