HOWTO · Batch

在批处理脚本中运行 Python 文件

本教程将讨论如何在批处理脚本中运行 Python 文件。

本页内容

通过批处理文件运行 Python 脚本是 Windows 操作:下文示例使用 .bat 文件和命令提示符。你需要安装 Python 解释器。如果 Windows 能通过 PATH 找到 python 命令,就可以直接调用;也可以直接指定某个 python.exe 的路径。

检查 Python 并准备文件

打开命令提示符并运行 python --version。显示版本号表示此命令已解析到某个解释器,但不代表所有 Python 安装都已加入 PATH。如果 Windows 提示无法识别 python,请使用下文介绍的解释器完整路径,或将目标 Python 安装目录加入 PATH。将批处理文件和 Python 脚本放在已知位置,以便明确它们的路径。

通过批处理文件运行 Python 脚本

将批处理文件(例如 run_python.bat)与 hello.py 放在同一目录。命令 @echo off 会在命令运行时隐藏命令本身。pause 是可选的:如果你通过双击启动批处理文件,并希望窗口保持打开状态,可以使用它;如果脚本结束后应立即将控制权交还给其他程序或终端,则省略它。

最简单的批处理调用方式是先写 @echo off,然后写 python hello.py。如果批处理文件可能从其他工作目录启动,可以使用相对于批处理文件自身位置的路径:python "%~dp0hello.py"。%~dp0 会展开为批处理文件所在的驱动器和目录路径,并包含末尾的反斜杠。

使用 Python 解释器的完整路径

如果 PATH 中无法找到 python,或者批处理文件必须选择特定安装版本,请使用可执行文件的完整路径。在批处理文件中写入 "C:\Program Files\Python312\python.exe" "%~dp0hello.py",并将示例路径替换为你电脑上的实际位置。给两个路径都加上引号,避免路径中的空格被当作分隔符。请确认解释器和脚本路径确实存在;即使路径加了引号,路径错误仍会导致运行失败。

向 Python 脚本传递参数

在批处理文件中,%* 会转发传给批处理文件的所有参数。例如,python "%~dp0greet.py" %* 会将这些参数转发给 greet.py。调用批处理文件时,请给包含空格的值加上引号,例如 run_greet.bat "Ada Lovelace"。引号可以确保姓名作为一个完整参数传递。

Python 脚本可以通过 sys.argv 读取这些值。将下方代码保存为 greet.py,然后使用上面的批处理命令调用它。如果没有提供姓名,脚本会使用默认值,因此也可以单独运行。

本节中的代码以及显示的标签或输出仍为英文。

import sys

name = sys.argv[1] if len(sys.argv) > 1 else "friend"
print(f"Hello, {name}!")
Hello, friend!

处理路径和常见运行问题

如果命令提示符提示无法识别 python,请先用 python --version 检查该命令,然后改用 python.exe 的完整路径或修正 PATH。如果 Python 已启动但无法打开脚本,请核对文件名和位置;如果批处理文件需要从任何当前目录找到同目录下的脚本,%~dp0 会很有用。路径中含有空格时,请用双引号括起来。如果脚本启动后报告缺少模块,请在批处理文件所选用的同一个 Python 环境中安装该依赖。这些命令使用 Windows 批处理语法,不能不加修改地用于 macOS 或 Linux shell。