📅  最后修改于: 2023-12-03 15:04:08.386000             🧑  作者: Mango
有时候我们需要在Python代码中执行一些shell命令,例如安装软件、执行脚本等等。在Python中,可以使用subprocess
模块调用shell命令。
通过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
异常。我们可以通过捕获这个异常来处理错误情况。
在Python中,os
模块提供了许多用于处理文件和目录的操作,例如列出目录、删除文件、更改文件权限等等。同时,os
模块也提供了几个函数,可以用于在Python中执行shell命令。
例如,我们可以使用os.system()
函数来执行shell命令:
import os
os.system('ls -al')
这段代码与之前的subprocess
例子等价,都输出当前工作目录下的所有文件和目录的详细信息。
不过要注意,os.system()
函数会阻塞Python进程,直到命令执行完成。如果我们需要更好的控制,或者需要捕获命令输出,仍然建议使用subprocess
模块。
在Python中,通过subprocess
模块和os
模块,我们可以方便地执行任何shell命令。这些函数提供了很大的灵活性,可以用于各种应用场景,例如自动化部署、调用第三方工具等等。