【发布时间】:2015-07-09 10:29:17
【问题描述】:
我正在尝试使用 Swift 打开一个终端并从那里运行一个 python 脚本。我发现这个函数可以这样做:
(Get terminal output after a command swift)
func runCommand(cmd : String, args : String...) -> (output: [String], error: [String], exitCode: Int32) {
var output : [String] = []
var error : [String] = []
let task = NSTask()
task.launchPath = cmd
task.arguments = args
let outpipe = NSPipe()
task.standardOutput = outpipe
let errpipe = NSPipe()
task.standardError = errpipe
task.launch()
let outdata = outpipe.fileHandleForReading.readDataToEndOfFile()
if var string = String.fromCString(UnsafePointer(outdata.bytes)) {
string = string.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet())
output = string.componentsSeparatedByString("\n")
}
let errdata = errpipe.fileHandleForReading.readDataToEndOfFile()
if var string = String.fromCString(UnsafePointer(errdata.bytes)) {
string = string.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet())
error = string.componentsSeparatedByString("\n")
}
task.waitUntilExit()
let status = task.terminationStatus
return (output, error, status)
}
我正在调用问题中写的函数:
let output = runCommand("/usr/bin" , args: "python " + folderPath + selecteditem)
args 的打印是:“python /Users/michael/Documents/Python/testestest.py”
如果我将它粘贴到终端,这是一个有效的命令。
但 xCode 告诉我:无法 posix_spawn:错误 13
你会建议我做什么?我不确定是否没有更简单的方法来启动运行命令的可见控制台。我正在考虑的另一个问题是,在 xcode 中实时输出会很棒(意味着在 python 脚本仍在运行时查看输出)这是否可能?
谢谢
【问题讨论】: