Python 执行多条 CMD 命令

在日常开发中,我们经常需要通过命令行执行一些系统命令。Python 提供了多种方法来运行这些命令,最常用的是 subprocess 模块。通过 subprocess 模块,我们不仅可以执行单条命令,还可以执行多条命令并获取它们的输出。本文将介绍如何在 Python 中执行多条 CMD 命令,并附上示例代码。

1. 了解 subprocess 模块

subprocess 模块是 Python 标准库的一部分,旨在提供更强大和灵活的方式来管理子进程。它支持执行外部命令、连接输入输出流,并能获取命令执行的结果。在执行多条 CMD 命令时,我们可以使用 subprocess.run()subprocess.Popen() 方法。

2. 执行多条命令的基本方法

我们可以通过命令分隔符 && 来连接多条命令。例如,如果我们想要创建一个目录并进入这个目录,可以写成:

mkdir new_folder && cd new_folder

但是在 Python 中,我们需要分步执行并获取结果。以下是一个示例,展示如何在 Python 中执行多条 CMD 命令。

import subprocess

# 创建目录
subprocess.run(["mkdir", "new_folder"], check=True)

# 进入目录
subprocess.run(["cd", "new_folder"], shell=True, check=True)

在这个示例中,check=True 参数用于检查命令的执行是否成功。如果失败,Python 将引发异常。

3. 使用 Popen 执行命令

subprocess.Popen 提供了更灵活的方式来执行命令,适合于需要同时处理输入、输出或错误的情况。以下是使用 Popen 方法的示例:

import subprocess

# 使用 Popen 方法
process1 = subprocess.Popen(["mkdir", "new_folder"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process1.communicate()

if process1.returncode == 0:
    print("Directory created successfully.")
else:
    print(f"Error: {stderr.decode()}")

# 更改目录
process2 = subprocess.Popen(["cmd.exe", "/c", "cd new_folder"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process2.communicate()

if process2.returncode == 0:
    print(stdout.decode())
else:
    print(f"Error: {stderr.decode()}")

4. 批量执行多个命令

除了逐条执行命令,我们还可以一次性执行一系列命令。比如,我们希望连续执行三个命令:创建目录、更改目录和创建文件。可以将这些合并为一个字符串,并使用 shell=True 来执行:

import subprocess

commands = "mkdir new_folder && cd new_folder && echo Hello World > myfile.txt"
process = subprocess.run(commands, shell=True, check=True)

if process.returncode == 0:
    print("All commands executed successfully.")

5. 总结

通过 subprocess 模块,Python 提供了强大的方法来执行 CMD 命令。无论是单条还是多条命令,我们都可以灵活地管理和处理命令的输入输出。这使得 Python 在自动化任务和系统管理方面非常有用。

功能 方法 备注
执行单条命令 subprocess.run() 简单、易用
执行多条命令 subprocess.Popen() 更高灵活性,适用于复杂任务
处理输出与错误 .communicate() 适用于获取标准输出和错误

希望本文能帮助你理解如何在 Python 中执行多条 CMD 命令,从而提升你在项目中的工作效率。