在 Minitab Statistical Software 中运行 Python 脚本

了解从 Minitab 运行 Python 的不同方式。
您可以通过三种方式从 Minitab 运行 Python 脚本:
  • 命令行窗格中运行 PYSC 命令。
  • 运行包含 PYSC 命令的 Minitab 可执行文件。
  • 自定义 Minitab 界面以运行包含 PYSC 命令的 Minitab 可执行文件。

PYSC 命令使用 Python 扩展 Minitab 的功能,但不会使 Minitab 成为交互式 Python 环境。因此,请仅对无需交互即可完成的 Python 脚本使用 Minitab。例如,在脚本运行时接受键盘输入的 input() 函数在 Minitab 中不起作用。Python 中的交互性采用许多其他形式,例如 plot.show()keyboard.read_key()

有关 Minitab 的 Python 模块(包括 Python 代码示例)的详细信息,请转到 Python API 引用

以下 .ZIP 文件提供了本指南中引用的所有文件:python_guide_files.zip

注意

在尝试将 Python 与 Minitab Statistical Software 集成之前,先安装并运行 Python。如需 Python 安装方面的协助,请咨询您的组织的技术支持部门。Minitab 技术支持不能协助安装 Python

命令行窗格中运行 Python 脚本

您可以在命令行窗格中运行 PYSC 命令。有关命令行窗格的一般信息,请转到命令行/历史记录窗格。有关使用会话命令的一般信息,请转到会话命令帮助

PYSC["filename.py"]["Args"...]

运行您指定的 Python 脚本。

Python 脚本的默认文件扩展名是 .PY。如果文件扩展名为 .PY,则无需键入文件扩展名。

可选变元 Args 允许通过 sys.argv[1:] 将变元传递给脚本 PythonArgs 可以是由空格分隔的任何文本值。用引号将变元括起。默认值为 None,这意味着脚本不会接收任何变元。

通常,您可以使用变元将数据从 Minitab 引入 Python。您可以通过多种方式输入变元。例如,可以使用作为列、矩阵或常量的标识符的变元:

Minitab 会话命令 值在 Python 用法
PYSC "test.py" "C1"
"C1"
使用以下函数检索列:
mtbpy.mtb_instance().get_column(sys.argv[1:][0])
PYSC "test.py" "M1"
"M1"
使用以下函数检索矩阵:
mtbpy.mtb_instance().get_matrix(sys.argv[1:][0])
PYSC "test.py" "K1"
"K1"
使用以下函数检索常量:
mtbpy.mtb_instance().get_constant(sys.argv[1:][0])

还可以使用作为 Minitab 中列、矩阵或常量的名称的变元:

Minitab 会话命令 值在 Python 用法
PYSC "test.py" "My Column"
"My Column"
使用以下函数检索列:
mtbpy.mtb_instance().get_column(sys.argv[1:][0])
PYSC "test.py" "My Matrix"
"My Matrix"
使用以下函数检索矩阵:
mtbpy.mtb_instance().get_matrix(sys.argv[1:][0])
PYSC "test.py" "My Constant"
"My Constant"
使用以下函数检索常量:
mtbpy.mtb_instance().get_constant(sys.argv[1:][0])

还可以指定变元以传递用于 Python 代码的文本。可以直接传递文本,也可以采用常量的形式传递。

Minitab 会话命令 值在 Python 用法
PYSC "test.py" "Text not Stored"
"Text not Stored"
本例传递的值不能与 mtbpy 'get' 命令一起使用。但是,Args 不仅限于传递列、矩阵和常量。
LET K1 = "Text in Constant" PYSC "test.py" K1
"Text in Constant"
本例着重表明,尽管 PYSC 不接受非文本值的变元,但只要将常量定义为文本值,即可将常量传递给 PYSC

传递多个变元时,可以从变元列表中按顺序访问变元:

Minitab 会话命令 值在 Python 用法
PYSC "test.py" "C1" "C2" "M1" "K3" "10"
"C1" "C2" "M1" "K3" "10"
本例是传递多个 Args 的示例,您将在此示例使用 Python 中的以下函数来访问这些变元:
mtbpy.mtb_instance().get_column(sys.argv[1:][0]) mtbpy.mtb_instance().get_column(sys.argv[1:][1]) mtbpy.mtb_instance().get_matrix(sys.argv[1:][2]) mtbpy.mtb_instance().get_constant(sys.argv[1:][3]) int(sys.argv[1:][4])

使用以下文件查看以下子命令的示例文本的输出。确保 test.py 文件位于 Minitab 的 Python 脚本文件夹中。
文件 说明
test.py 本指南中使用的 Python 脚本示例。将变元传递给脚本时,结果包括变元值的列表。当您使用变元“ArgToBePrintedToStdErr”运行脚本时,该脚本会将变元的名称写入 stderr 文件。当您使用变元“ArgToBePrintedToStdOut”运行脚本时,该脚本会将变元的名称写入 stdout 文件。使用以下子命令控制这些文件的内容是否显示在 Minitab 的“输出”窗格中。
NOSERR
指定在 Minitab“输出”窗格中不显示来自标准误 (stderr) 控制台输出的文本。在 Python 集成开发环境中运行代码时,尽管您可以使用 Python 将其他结果放入 stderr 文件中,但可以在 stderr 控制台输出中看到 Python 错误消息。例如,默认情况下:
PYSC "test.py" "ArgToBePrintedToStdErr". 
生成以下包括 stderr 控制台输出的结果:

Python Script

These results are from external software.
The following arguments were passed to Python: ['ArgToBePrintedToStdErr']

Python standard error

The following arguments were printed to Stderr: 'ArgToBePrintedToStdErr'
以下会话命令排除 stderr 控制台输出:
PYSC "test.py" "ArgToBePrintedToStdErr"; NOSERR.
会话命令生成以下结果:

Python Script

These results are from external software.
The following arguments were passed to Python: ['ArgToBePrintedToStdErr']
SOUT
指定在 Minitab“输出”窗格中显示来自标准控制台输出 (stdout) 的文本。在 Python 集成开发环境中,您可以在 stdout 中查看 print() 等命令的结果。例如,默认情况下:
PYSC "test.py" "ArgToBePrintedToStdOut". 
生成以下排除 stdout 的结果:

Python Script

These results are from external software.
The following arguments were passed to Python: ['ArgToBePrintedToStdOut']
以下会话命令包括 stdout
PYSC "test.py" "ArgToBePrintedToStdOut"; SOUT.
会话命令生成以下结果:

Python Script

These results are from external software.
The following arguments were passed to Python: ['ArgToBePrintedToStdOut']

Python standard output

The following arguments were printed to Stdout: 'ArgToBePrintedToStdOut'

从 Minitab 可执行文件运行 Python 脚本

使用以下文件执行本节中的步骤:
文件 说明
test.py 本指南中使用的 Python 脚本示例。将变元传递给脚本时,结果包括变元值的列表。
PYEXEC.MTB 包括会话命令的示例 Minitab 可执行文件,用于运行具有 2 个变元的 test.py 脚本。

可执行文件是包含 Minitab 会话命令的文本文件。您可以在 Minitab 可执行文件中包括运行 PythonPYSC 命令。使用可执行文件,您可以轻松运行命令,而无需重新键入命令,并且您可以将可执行文件分配给 Minitab 中的自定义按钮。有关 Minitab 可执行文件的详细信息,请转到 Minitab 宏帮助。要运行可执行文件,请选择文件 > 运行可执行文件

假设您创建了可执行文件 PYEXEC.MTB。可执行文件包含以下 Minitab 命令:
PYSC "test.py" "Arg1" "Arg2"
要使用可执行文件运行 Python 脚本,请使用以下步骤:
  1. 选择 文件 > 运行可执行文件
  2. 单击选择文件
  3. 选择 PYEXEC.MTB
  4. 单击打开
该脚本在 Minitab 中显示变元的值,并且可执行文件生成以下结果:

Python Script

These results are from external software.
The following arguments were passed to Python: ['Arg1', 'Arg2']

从 Minitab 界面运行 Python 脚本

如果您有 Minitab 可执行文件,则可以创建运行可执行文件的自定义按钮或菜单。有关如何在 Minitab 中自定义界面的一般信息,请转到自定义菜单、工具栏和快捷键

您可以使用以下步骤创建运行可执行文件的自定义按钮:
  1. 选择 查看 > 自定义
  2. 单击工具选项卡。
  3. 工具选项卡上,单击新建 (插入) 按钮
  4. 键入命令的名称,然后按 Enter 键。
  5. 单击打开按钮
  6. 从文件类型下拉列表中,选择所有文件 (*.*)
  7. 浏览并选择可执行文件。
  8. 单击打开
  9. 再次选择查看 > 自定义
  10. 命令选项卡的类别下,选择工具
  11. 打开自定义对话框时,将新命令拖动到您希望其显示在 Minitab 菜单或工具栏上的位置。
  12. 单击关闭

除了自定义 Minitab 的界面,您还可以使用符合 COM 的语言创建自定义对话框和分析。有关如何通过 COM 自定义 Minitab 的信息,请转到 Minitab 自动化

停止 PYSC 命令

您可以停止 Python 脚本并保持 Minitab 打开,这样可防止丢失自上次保存后对 Minitab 项目进行的任何编辑。停止 Python 脚本的方法取决于您的操作系统。
Windows

Ctrl + Alt + Delete 以打开 Windows 任务管理器。然后,结束 Python 进程。

macOS
Command + Option + Esc 打开“强制退出”窗口。然后,结束 Python 应用程序。