- 在 Windows 命令提示符或 PowerShell 中运行 Python 脚本或交互式解释器。
- 在代码中执行系统命令(即调用 CMD 或 PowerShell)。
我会从最基础的部分开始,逐步深入,并包含大量实用示例。
第一部分:在 Windows 命令行中使用 Python
这是最常见的用法,即在终端里与 Python 交互或执行脚本。
环境准备:确认 Python 已正确安装
在开始之前,请确保你的电脑上已经安装了 Python,并且系统环境变量 PATH 中包含了 Python 的路径。
如何检查?
打开一个新的 命令提示符 或 PowerShell 窗口(推荐使用 PowerShell,功能更强大),输入以下命令:
python --version
或者,如果你的 Python 是通过官方安装器安装的,也可能需要用 python3:
python3 --version
如果看到类似 Python 3.11.4 的输出,说明一切正常,如果提示 'python' 不是内部或外部命令...,说明 Python 的安装路径没有被添加到系统的 PATH 环境变量中,你需要重新运行 Python 安装程序,并勾选 "Add Python to PATH" 选项。
启动 Python 交互式解释器
在命令行中输入 python 或 python3,然后按回车,你会进入 Python 交互模式。
C:\Users\YourName> python Python 3.11.4 (main, Jun 7 2025, 12:45:35) [MSC v.1934 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
这个 >>> 提示符表示 Python 正在等待你的输入,你可以在这里直接输入 Python 代码并立即看到结果。
示例:
>>> print("Hello, World!")
Hello, World!
>>> 2 + 3
5
>>> my_name = "Alice"
>>> print(f"Hello, {my_name}!")
Hello, Alice!
>>> # 输入 exit() 或按 Ctrl+Z 再按回车 来退出
>>> exit()
C:\Users\YourName>
运行 Python 脚本文件
假设你有一个名为 hello.py 的文件,内容如下:
# hello.py
import time
import datetime
print("脚本开始运行...")
print("当前时间是:", datetime.datetime.now())
time.sleep(2) # 暂停2秒
print("脚本运行结束。")
如何运行它?
在命令行中,使用 python 命令,后面跟上你的文件路径。
C:\Users\YourName> python C:\path\to\your\script\hello.py
更简单的方式(如果脚本在当前目录):
-
在命令行中使用
cd命令切换到hello.py文件所在的目录。C:\Users\YourName> cd C:\path\to\your\script
-
然后直接运行文件名。
C:\path\to\your\script> python hello.py
输出结果:
脚本开始运行...
当前时间是: 2025-10-27 10:30:00.123456
脚本运行结束。
命令行参数
你的 Python 脚本可以接收来自命令行的参数,这通过 sys 模块来实现。
修改 hello.py:
# hello.py
import sys
# sys.argv 是一个列表,包含了所有的命令行参数
# sys.argv[0] 是脚本本身的名称
# sys.argv[1] 是第一个参数,以此类推
if len(sys.argv) > 1:
name = sys.argv[1]
print(f"Hello, {name}!")
else:
print("Hello, World!")
print("用法: python hello.py [你的名字]")
运行方式:
# 不带参数运行 C:\path\to\your\script> python hello.py Hello, World! 用法: python hello.py [你的名字] # 带参数运行 C:\path\to\your\script> python hello.py Alice Hello, Alice!
常用命令行技巧
- 自动补全: 在 PowerShell 中,按
Tab键可以自动补全文件名或目录名。 - 清屏: 在 CMD 中输入
cls,在 PowerShell 中输入clear或其快捷键Ctrl+L。 - 历史命令: 使用上下箭头键 和 可以浏览之前输入过的命令。
- 多命令执行: 在同一行用
&连接多个命令。# 先运行脚本,然后列出当前目录的文件 C:\path\to\your\script> python hello.py & dir
第二部分:在 Python 代码中执行 Windows 命令
有时,你需要让你的 Python 程序去调用操作系统的命令,比如执行 dir、copy,或者运行一个批处理文件 (.bat)。
Python 提供了多种方式来实现,最常用的是 subprocess 模块。
使用 os.system() (简单但已过时)
这是最简单直接的方法,但不推荐用于新项目,因为它无法获取命令的输出,且安全性较差。
import os
# 执行 "dir" 命令,结果会直接打印到控制台
# 返回值是命令执行后的退出码 (0 表示成功)
return_code = os.system('dir')
print(f"命令执行完毕,退出码: {return_code}")
使用 subprocess 模块 (强烈推荐)
subprocess 是现代、灵活且强大的选择,可以让你更好地控制子进程。
subprocess.run() (推荐用法)
这是 Python 3.5+ 引入的推荐方法,简单易用。
示例 1:执行一个命令并获取其输出
import subprocess
try:
# 执行 "dir" 命令
# text=True 会将输出解码为字符串
# capture_output=True 会捕获标准输出和标准错误
result = subprocess.run(['dir'], capture_output=True, text=True, shell=True, check=True)
# 打印命令的标准输出
print("命令执行成功!")
print("标准输出:")
print(result.stdout)
except subprocess.CalledProcessError as e:
# 如果命令执行失败 (返回非零退出码)
print(f"命令执行失败,错误码: {e.returncode}")
print("标准错误:")
print(e.stderr)
注意:
shell=True: 在 Windows 上,如果命令是内置的(如dir,copy),通常需要shell=True,如果你的命令是一个外部程序的完整路径(如C:\Windows\System32\notepad.exe),可以不用shell=True。check=True: 如果设置为 True,当命令返回非零退出码(即执行失败)时,会自动抛出CalledProcessError异常。capture_output=True: 捕获输出,你也可以分别使用stdout=subprocess.PIPE和stderr=subprocess.PIPE。
示例 2:执行带参数的命令
import subprocess
# 创建一个新文件 "test.txt" 并写入内容
# 注意 /c 表示执行完命令后关闭 CMD 窗口
command = 'echo Hello from Python > test.txt'
subprocess.run(command, shell=True, check=True)
print("文件已创建。")
# 使用 "type" 命令来查看文件内容
command_to_read = 'type test.txt'
result = subprocess.run(command_to_read, shell=True, capture_output=True, text=True, check=True)
print("\n文件内容:")
print(result.stdout)
# 清理
subprocess.run('del test.txt', shell=True)
进阶:在 Python 中打开 CMD 或 PowerShell 窗口并执行命令
如果你想在 Python 代码中弹出一个新的 CMD 窗口来执行命令,可以使用 start 命令。
import subprocess
import time
# 使用 'start' 命令会弹出一个新的 CMD 窗口
# 'cmd /k' 表示执行完命令后窗口保持打开
# 'ping -n 5 127.0.0.1' 是一个会执行5秒的命令
command = 'start cmd /k ping -n 5 127.0.0.1'
print("即将打开一个新的 CMD 窗口并执行 ping 命令...")
subprocess.run(command, shell=True)
print("主程序继续执行。")
time.sleep(2)
print("主程序结束。")
总结与对比
| 功能/场景 | 推荐方法 | 备注 |
|---|---|---|
| 在终端运行 Python 脚本 | python your_script.py |
基础必备技能。 |
| 在终端进入交互模式 | python |
用于快速测试代码片段。 |
| Python 接收命令行参数 | import sys; print(sys.argv) |
用于制作可配置的脚本工具。 |
| 在 Python 中执行简单命令 | os.system() |
简单,但功能有限,不推荐新项目使用。 |
| 在 Python 中执行命令并获取输出/状态 | subprocess.run() |
强烈推荐,现代、灵活、功能强大。 |
| 在 Python 中弹出新窗口执行命令 | subprocess.run('start cmd /k ...', shell=True) |
用于需要用户交互或长时间运行的后台任务。 |
希望这份详细的指南能帮助你熟练地在 Windows 环境下使用 Python 命令行!
