当前位置:首页 > 行业动态 > 正文

python如何执行shell命令

在Python中执行shell命令,可以使用subprocess模块。subprocess模块允许我们启动新的进程,连接到它们的输入/输出/错误管道,并获取它们的返回码,这个模块提供了一种高级的创建新进程、连接到它们的输入/输出/错误管道、以及等待和获取它们的返回值的方法。

下面是一个简单的例子,展示了如何使用subprocess模块执行shell命令:

import subprocess
执行shell命令
command = "ls l"
result = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
获取命令执行结果
stdout = result.stdout.decode("utf8")
stderr = result.stderr.decode("utf8")
打印执行结果
print("输出结果:", stdout)
print("错误信息:", stderr)

在这个例子中,我们首先导入了subprocess模块,我们定义了一个要执行的shell命令(这里是ls l,用于列出当前目录下的所有文件和文件夹),接下来,我们使用subprocess.run()函数来执行这个命令,这个函数的第一个参数是要执行的命令,第二个参数shell=True表示我们要在一个shell中运行这个命令,第三个参数stdout=subprocess.PIPE和第四个参数stderr=subprocess.PIPE表示我们希望捕获命令的标准输出和标准错误。

当我们调用subprocess.run()函数时,它会启动一个新的进程来执行我们的命令,这个进程的输出和错误会被捕获到stdout和stderr变量中,我们可以使用decode()方法将这些字节串转换为字符串。

我们打印出命令的输出结果和错误信息。

除了使用subprocess.run()函数之外,我们还可以使用其他一些函数来执行shell命令,我们可以使用subprocess.Popen()函数来创建一个子进程,然后使用communicate()方法来与子进程进行交互,下面是一个使用subprocess.Popen()和communicate()的例子:

import subprocess
执行shell命令
command = "ls l"
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
获取命令执行结果
stdout, stderr = process.communicate()
打印执行结果
print("输出结果:", stdout.decode("utf8"))
print("错误信息:", stderr.decode("utf8"))

在这个例子中,我们首先导入了subprocess模块,我们定义了一个要执行的shell命令(同样是ls l),接下来,我们使用subprocess.Popen()函数来创建一个子进程,并设置它的标准输出和标准错误为管道,我们使用子进程的communicate()方法来与子进程进行交互,这个方法会等待子进程完成,并返回一个包含子进程的标准输出和标准错误的元组,我们可以使用decode()方法将这些字节串转换为字符串。

我们打印出命令的输出结果和错误信息。

在Python中执行shell命令非常简单,只需要使用subprocess模块提供的相应函数即可,这些函数可以帮助我们轻松地在Python程序中调用外部命令,实现各种功能。

0

随机文章