📅  最后修改于: 2023-12-03 15:21:53.628000             🧑  作者: Mango
在 Python 中运行 Shell 脚本可以让我们更方便地完成某些任务。本文将介绍如何从 Python 中运行 Shell 脚本。
Python 提供了 subprocess
模块,它允许我们在 Python 程序中运行新进程。我们可以使用 subprocess.call()
函数来运行 Shell 命令或脚本。
import subprocess
subprocess.call(['ls', '-l'])
上面的代码运行了 ls -l
命令,并打印输出结果。
subprocess.call()
函数只是 subprocess.Popen()
函数的简便之一。我们可以使用 subprocess.Popen()
函数来创建一个 Popen
对象,然后可以使用这个对象的某些方法和属性来控制子进程。
import subprocess
p = subprocess.Popen(['ls', '-l'])
p.wait()
上面的代码创建了 Popen
对象,并等待子进程完成后才返回。
subprocess.Popen()
函数有一个 shell
参数,如果设置为 True
,则可以运行 Shell 命令字符串,否则只能运行由一个程序和多个参数组成的列表。
import subprocess
p = subprocess.Popen('ls -l', shell=True)
p.wait()
上面的代码通过设置 shell
为 True
,运行了 Shell 命令字符串。
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()
函数则可以更加灵活地控制子进程。同时,我们还可以使用标准输入、标准输出和标准错误输出来控制子进程的输入输出。