使用参数调用python命令行工具,使用Swift的PythonKit

aiazj4mn  于 2023-02-02  发布在  Python
关注(0)|答案(1)|浏览(171)

我已经用PythonKit做了一些实验,并且有一些简单的例子可以使用,但是现在我想调用一个带有一些命令行参数的python脚本,但是我似乎不能让它工作--它大多数时候只是崩溃。
这是我在swift中使用的代码--我正在尝试获取脚本的版本号:

let sys = Python.import("sys")
sys.path.append(“/Path/To/Script/Directory/“)
var example = Python.import(“my_script”)

example.main("-v")

如果我这样调用脚本:example.main()--不带任何参数,脚本打印出它的参数:

optional arguments:
    -v, --version         show program's version number and exit
    -H, --help            Display this information
    etc.

但PythonKit随后崩溃了:

@discardableResult
    func dynamicallyCall(
        withArguments args: [PythonConvertible] = []) -> PythonObject {
        return try! throwing.dynamicallyCall(withArguments: args)
    }

崩溃似乎是由python脚本中的sys.exit()调用引起的,就在打印参数列表之后,当时没有参数,如果我在终端中使用它,脚本工作正常。
那么,有人能告诉我如何从PythonKit调用一个需要参数的python脚本吗?
另外,如果没有争论,我可以做些什么来防止崩溃吗?

b1zrtrql

b1zrtrql1#

我不熟悉swift,但知道pythonsys.argv列表获取参数
那么,尝试直接向sys对象添加参数如何?

let sys = Python.import("sys")
sys.path.append(“/Path/To/Script/Directory/“)
sys.argv.append("-v")
var example = Python.import(“my_script”)
example.main()

相关问题