📜  从 python 运行 shell 脚本(1)

📅  最后修改于: 2023-12-03 15:21:53.628000             🧑  作者: Mango

从 Python 运行 Shell 脚本

在 Python 中运行 Shell 脚本可以让我们更方便地完成某些任务。本文将介绍如何从 Python 中运行 Shell 脚本。

subprocess 模块

Python 提供了 subprocess 模块,它允许我们在 Python 程序中运行新进程。我们可以使用 subprocess.call() 函数来运行 Shell 命令或脚本。

import subprocess

subprocess.call(['ls', '-l'])

上面的代码运行了 ls -l 命令,并打印输出结果。

Popen 对象

subprocess.call() 函数只是 subprocess.Popen() 函数的简便之一。我们可以使用 subprocess.Popen() 函数来创建一个 Popen 对象,然后可以使用这个对象的某些方法和属性来控制子进程。

import subprocess

p = subprocess.Popen(['ls', '-l'])
p.wait()

上面的代码创建了 Popen 对象,并等待子进程完成后才返回。

shell 参数

subprocess.Popen() 函数有一个 shell 参数,如果设置为 True,则可以运行 Shell 命令字符串,否则只能运行由一个程序和多个参数组成的列表。

import subprocess

p = subprocess.Popen('ls -l', shell=True)
p.wait()

上面的代码通过设置 shellTrue,运行了 Shell 命令字符串。

stdin, stdout 和 stderr

subprocess.Popen() 函数还有三个参数,分别控制子进程的标准输入、标准输出和标准错误输出。这些参数可以是 subprocess.PIPE 或一个文件对象。

import subprocess

p = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
out, err = p.communicate()
print(out.decode())

上面的代码使用 subprocess.PIPE 参数来捕获子进程的标准输出,并使用 communicate() 方法获取子进程的输出。

结论

使用 Python 的 subprocess 模块可以方便地在 Python 中运行 Shell 命令或脚本。使用 subprocess.call() 函数可以快速运行 Shell 命令或脚本,而使用 subprocess.Popen() 函数则可以更加灵活地控制子进程。同时,我们还可以使用标准输入、标准输出和标准错误输出来控制子进程的输入输出。