Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

pyrunfile

MATLAB 运行 Python 脚本文件

自 R2021b 起

    说明

    示例

    pyrunfile(file) 执行 file 中的 Python® 语句。

    pyrun 函数不同,使用 pyrunfile 函数在 Python 工作区中创建的变量不是持久变量。对 pyrunfile 的后续调用无法访问这些变量。

    示例

    pyrunfile(file input) 使用输入参数执行 Python 语句。Python 脚本以字符串形式读取命令行参数。

    示例

    outvars = pyrunfile(file,outputs)lhs 变量进行赋值。这些函数还允许用户选择要作为输入传递给给定 Python 代码的 MATLAB® 工作区变量,并将在脚本中处理的全部 Python 变量或用户选择的部分变量返回给 MATLAB。

    示例

    outvars = pyrunfile(file,outputs,pyName=pyValue) 使用一个或多个名称-值对组参数执行代码。

    示例

    全部折叠

    调用文件 hello.py 中的 Python 语句。

    使用以下语句创建 Python 脚本 hello.py

    greeting = "hello"
    print(greeting)

    在 MATLAB 命令行中显示输出。

    pyrunfile("hello.py")
    hello

    创建一个 Python 脚本并传递一个字符串。

    使用以下语句创建 greeting.py

    import sys
    greeting = sys.argv[1]
    print(greeting)

    向该脚本传递一个字符串并显示输出。

    pyrunfile("greeting.py 'hello world'")
    hello world

    从 MATLAB 运行一个 Python 脚本,并将该脚本生成的变量返回给 MATLAB。

    从以下语句创建 Python 脚本 makeList.py

    l = ['A', 'new', 'list']

    运行该脚本以创建列表,并将其以 data 变量的形式返回给 MATLAB。

    data = pyrunfile("makeList.py", "l")
    data = 
      Python list with no properties.
    
        ['A', 'new', 'list']
    

    调用接受输入参数的 Python 脚本。

    从以下语句创建 Python 脚本 addac.py。该脚本接受输入参数 xy,并返回变量 z

    def add(a,c):
        b = a+c
        return b
    
    z = add(x,y)

    传递 xy 的值。以 MATLAB 变量 res 形式返回变量 z

    res = pyrunfile("addac.py","z",x=3,y=2)
    res = 5

    输入参数

    全部折叠

    包含 Python 表达式或语句的 Python 文件,指定为字符串标量或字符向量。

    示例: "test.py"

    包含具有命令行输入参数的 Python 表达式或语句的 Python 文件,指定为字符串标量或字符向量。

    示例: "test.py var"

    一个或多个 Python 变量名称,指定为字符串数组。变量可以是局部变量,也可以是全局变量。MATLAB 将 code 的输出赋给由 outputs 指定的每个变量,并在 outvars 中返回值。

    示例: "L"

    要传递给 Python code 的一个或多个输入参数名称和值,指定为关键字和值参数。pyName 是变量的 Python 名称,pyValue 是所赋的值。您可采用任意顺序指定多个名称-值对组参数,如 pyName1=pyValue1,...,pyNameN=pyValueN 所示。

    示例: x=3

    输出参数

    全部折叠

    一个或多个 MATLAB 工作区变量名称,从 code 中以有效类型形式返回。outvars 的数目对应于 outvars 参数的数目。如果您要访问 Python 数据,则必须使用 outvars 将 Python 对象显式返回给 MATLAB。

    局限性

    • 对于使用 pyrunpyrunfile 定义的 Python 类,如果将类的实例返回到 MATLAB,将无法修改这些类。如果需要更改类定义,请重新启动解释器会话:

      terminate(pyenv)
      pyenv(ExecutionMode="OutOfProcess")

      或者,重新启动 MATLAB 以使用 "InProcess" 模式。

      有些局部变量要由其他局部变量通过某种方法来初始化,pyrunpyrunfile 函数不支持具有这种局部变量的类。对于这种用法,请创建一个模块并使用 py. 前缀访问它。

    版本历史记录

    在 R2021b 中推出