是否可以將 .py 檔案的輸出存盤在 swift 變數中?在我的 xcode 專案中,我放置了一個 python 腳本。我使用此代碼運行此腳本
class ViewController: NSViewController {
var pathForFile = Bundle.main.path(forResource: "eject", ofType: "py")
let path = "/usr/bin/python/"
override func viewDidLoad() {
let arguments = [pathForFile]
let task = Process.launchedProcess(launchPath: path, arguments: arguments as! [String])
task.waitUntilExit()
super.viewDidLoad()
}
}
如果我放入 print(x)python 檔案,一旦執行,我可以在 xcode 的輸出視窗中看到 x 值。
我也嘗試放入return xmain函式,然后嘗試let y = task.waitUntilExit()在swift檔案中設定,但我唯一得到的是一個空變數
我對swift了解不多,所以請原諒我缺乏知識。提前致謝!
uj5u.com熱心網友回復:
解決方案
如本頁
https://www.hackingwithswift.com/example-code/system/how-to-run-an-external-program-using-process
中所述,并在 Willeke 建議的答案中顯示,您可以Pipe()使用那。
我更改了代碼,如下所示。
override func viewDidLoad() {
super.viewDidLoad()
let task = Process()
task.executableURL = URL(fileURLWithPath: "/usr/bin/python")
let filename = Bundle.main.path(forResource: "eject", ofType: "py")
task.arguments = [filename!]
let outputPipe = Pipe()
task.standardOutput = outputPipe
do{
try task.run()
} catch {
print("error")
}
let outputData = outputPipe.fileHandleForReading.readDataToEndOfFile()
let output = String(decoding: outputData, as: UTF8.self)
print(output)
}
一定要把這個
let outputPipe = Pipe()
task.standardOutput = outputPipe
在task.run()命令和這個之前
let outputData = outputPipe.fileHandleForReading.readDataToEndOfFile()
let output = String(decoding: outputData, as: UTF8.self)
print(output)
在它之后。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/420367.html
標籤:
下一篇:資料庫相關作業流程與工具
