Python 执行 Shell 命令
在Python编程中,有时候我们需要执行一些外部的Shell命令来完成一些任务,比如调用系统命令、执行脚本等。Python提供了多种方法来执行Shell命令,本文将介绍其中的几种常用方法。
方法一:使用os.system()
函数
os.system()
函数可以在Python中执行Shell命令,它会直接调用操作系统的Shell来执行指定的命令。下面是一个简单的例子:
import os
os.system("ls")
上面的代码会执行ls
命令,即列出当前目录下的文件和文件夹。os.system()
函数执行命令后,会返回命令的退出状态码。如果命令执行成功,返回值为0;如果命令执行失败,返回值为非零值。
需要注意的是,os.system()
函数会直接将命令结果输出到终端,而不会将结果作为函数的返回值。如果需要获取命令的输出结果,可以使用os.popen()
函数。
方法二:使用subprocess.run()
函数
subprocess.run()
函数是Python 3.5及以上版本中新增的一个函数,它可以方便地执行Shell命令,并获取命令的输出结果。下面是一个示例:
import subprocess
result = subprocess.run(["ls", "-l"], capture_output=True, text=True)
print(result.stdout)
上面的代码会执行ls -l
命令,并将命令的输出结果保存在result.stdout
中。capture_output=True
参数用于捕获命令的输出结果,text=True
参数用于将输出结果以文本形式返回。
subprocess.run()
函数的返回值是一个CompletedProcess
对象,包含了命令的退出状态码、输出结果等信息。可以通过访问CompletedProcess
对象的属性来获取这些信息。
方法三:使用subprocess.Popen()
类
subprocess.Popen()
类是Python提供的一个强大的工具,可以用于执行复杂的Shell命令,并控制命令的执行过程。下面是一个示例:
import subprocess
process = subprocess.Popen(["ping", "-c", "4", "www.baidu.com"], stdout=subprocess.PIPE)
output, error = process.communicate()
print(output.decode("utf-8"))
上面的代码会执行ping -c 4 www.baidu.com
命令,即向百度服务器发送4个ICMP回显请求,并获取命令的输出结果。
subprocess.Popen()
类的构造函数接受一个命令列表作为参数,其中第一个元素是要执行的命令,后面的元素是命令的参数。stdout=subprocess.PIPE
参数用于将命令的输出结果保存在管道中,以便后续读取。communicate()
方法用于等待命令执行完成,并获取命令的输出结果。
方法四:使用第三方库sh
除了Python自带的模块,还有一些第三方库可以用来执行Shell命令,比如sh
库。sh
库是一个基于Python的跨平台Shell命令执行库,它提供了一种更简洁、更直观的方式来执行Shell命令。下面是一个示例:
import sh
result = sh.ls("-l")
print(result)
上面的代码使用sh
库执行了ls -l
命令,并将命令的输出结果保存在result
变量中。可以直接将命令和参数作为函数调用的方式来执行Shell命令。
需要注意的是,sh
库是一个第三方库,需要使用pip
命令安装:
pip install sh
总结
本文介绍了Python中执行Shell命令的几种常用方法,包括使用os.system()
函数、subprocess.run()
函数、subprocess.Popen()
类和第三方库sh
。根据不同的需求,可以选择适合自己的方法来执行Shell命令。
执行Shell命令是Python编程中的一个常见需求,掌握这些方法可以帮助我们更好地与操作系统进行交互,完成各种任务。
注意:执行Shell命令需要谨慎处理