📜  python run shell 命令 - Python (1)

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

Python中运行shell命令

有时候我们需要在Python代码中执行一些shell命令,例如安装软件、执行脚本等等。在Python中,可以使用subprocess模块调用shell命令。

使用subprocess模块

通过subprocess模块,我们可以在Python中运行任何命令。下面是一个简单的例子,演示如何在Python中执行ls命令:

import subprocess

subprocess.run(['ls', '-al'])

这段代码会打印出当前工作目录下的所有文件和目录的详细信息。

subprocess.run()方法的第一个参数是要执行的命令,以列表形式传递。第二个参数是可选参数,用于控制命令如何执行。例如,我们可以使用subprocess.PIPE来捕获命令的输出,如下所示:

import subprocess

result = subprocess.run(['ls', '-al'], stdout=subprocess.PIPE)

print(result.stdout.decode())

在这个例子中,subprocess.run()方法的第二个参数stdout指定为subprocess.PIPE,表示我们要捕获命令的输出。result.stdout是一个bytes对象,我们可以使用decode()方法将其转换为字符串,以便打印输出。

上述例子中,我们演示了如何调用shell命令并捕获其输出。如果命令执行时抛出异常,subprocess.run()会抛出CalledProcessError异常。我们可以通过捕获这个异常来处理错误情况。

使用os模块

在Python中,os模块提供了许多用于处理文件和目录的操作,例如列出目录、删除文件、更改文件权限等等。同时,os模块也提供了几个函数,可以用于在Python中执行shell命令。

例如,我们可以使用os.system()函数来执行shell命令:

import os

os.system('ls -al')

这段代码与之前的subprocess例子等价,都输出当前工作目录下的所有文件和目录的详细信息。

不过要注意,os.system()函数会阻塞Python进程,直到命令执行完成。如果我们需要更好的控制,或者需要捕获命令输出,仍然建议使用subprocess模块。

结论

在Python中,通过subprocess模块和os模块,我们可以方便地执行任何shell命令。这些函数提供了很大的灵活性,可以用于各种应用场景,例如自动化部署、调用第三方工具等等。