使用 Python 批量执行多条 Shell 命令

在日常开发中,批量执行 Shell 命令是一个常见的需求。使用 Python 可以很方便地实现这一功能。下面,我们将通过几个简单的步骤来实现这个目标。

整体流程

以下是步骤概要表:

步骤 描述
1 准备 Python 环境
2 创建一个 Python 脚本
3 编写执行 Shell 命令的代码
4 运行并测试脚本
5 根据需要修改和优化代码

步骤详解

步骤 1: 准备 Python 环境

确保你的计算机上已经安装了 Python 环境。在终端中输入以下命令来检查 Python 是否已安装:

python --version

如果已安装,将显示 Python 的版本号。若未安装,请从 [Python 官网](

步骤 2: 创建一个 Python 脚本

在你希望保存脚本的文件夹中,创建一个新的 Python 文件,例如 execute_shell.py

步骤 3: 编写执行 Shell 命令的代码

execute_shell.py 文件中,编写以下代码:

import subprocess

# 定义需要执行的 shell 命令
commands = [
    'echo "Hello World!"',   # 示例命令1:打印 "Hello World!"
    'ls -l',                 # 示例命令2:列出当前目录下的文件
    'pwd'                    # 示例命令3:显示当前工作目录
]

# 循环执行每条命令
for command in commands:
    try:
        # 以 shell 方式运行命令
        result = subprocess.run(command, shell=True, check=True, text=True, capture_output=True)
        
        # 打印命令的输出
        print(f"Command: {command}\nOutput:\n{result.stdout}\n")
    except subprocess.CalledProcessError as e:
        # 捕获并打印错误
        print(f"Command: {command}\nError:\n{e.stderr}\n")
代码解释:
  • import subprocess: 导入 subprocess 模块,用于运行外部命令。
  • commands: 定义一个包含多条 Shell 命令的列表。
  • subprocess.run(...): 执行命令,参数说明:
    • shell=True: 表示以 shell 的方式执行命令。
    • check=True: 如果命令返回一个非零状态码,则引发 CalledProcessError
    • text=True: 将输出作为字符串处理。
    • capture_output=True: 捕获命令的标准输出和标准错误。
  • print(...): 打印每条命令的输出或错误。

步骤 4: 运行并测试脚本

保存更改后,在终端中运行以下命令来执行你的 Python 脚本:

python execute_shell.py

脚本运行后,你应该会看到每条命令的输出。如果有任何错误,也将会被捕捉并打印。

步骤 5: 根据需要修改和优化代码

根据你的需求,你可以更新 commands 列表中的命令,或者添加错误处理、日志记录等功能,让脚本更具通用性。

关系图

erDiagram
    COMMANDS {
        string command
        string output
        string error
    }
    RUN_COMMAND {
        string command_name
        boolean success
    }
    COMMANDS ||--o{ RUN_COMMAND : executes

总结

通过上述步骤,你已经学会了如何使用 Python 批量执行多条 Shell 命令。掌握这个技能后,可以在开发和运维中更加高效地执行批处理任务。随着你进一步的学习,可以探索更多关于 subprocess 模块的高级用法,享受 Python 带来的便利与强大。