Python3运行Shell命令
在Python中,我们可以通过subprocess
模块来运行Shell命令。这使我们能够在Python脚本中执行各种命令行操作,从而扩展我们的程序的功能和灵活性。
本文将介绍如何使用Python3运行Shell命令,并提供一些示例来帮助您更好地理解。
subprocess模块
subprocess
模块是Python标准库中的一个模块,它提供了在Python脚本中运行子进程的功能。这个模块允许我们启动一个新的进程,与其进行交互,并获取其输出。
subprocess
模块中的run
函数是最常用的函数,它用于运行Shell命令。它接受一个命令字符串作为参数,并返回一个CompletedProcess
对象,其中包含命令的执行结果。
import subprocess
result = subprocess.run("ls", shell=True, capture_output=True, text=True)
print(result.stdout)
上述代码中,我们使用subprocess.run
函数运行了一个Shell命令ls
,并将结果保存在result
变量中。shell=True
参数告诉subprocess.run
函数使用Shell解释器来执行命令。capture_output=True
参数将命令的输出捕获到result.stdout
属性中。text=True
参数将result.stdout
属性的内容以字符串形式返回。
运行简单的Shell命令
让我们来看一些简单的示例来演示如何运行Shell命令。
示例1:输出Hello World
import subprocess
result = subprocess.run("echo Hello World", shell=True, capture_output=True, text=True)
print(result.stdout)
上述代码中,我们运行了一个简单的Shell命令echo Hello World
,将结果打印到标准输出。
示例2:列出目录中的文件
import subprocess
result = subprocess.run("ls", shell=True, capture_output=True, text=True)
print(result.stdout)
上述代码中,我们运行了一个Shell命令ls
,它会列出当前目录中的所有文件和文件夹,并将结果打印到标准输出。
示例3:创建目录
import subprocess
result = subprocess.run("mkdir new_dir", shell=True)
上述代码中,我们运行了一个Shell命令mkdir new_dir
,它会在当前目录中创建一个名为new_dir
的新目录。
与子进程进行交互
subprocess
模块还允许我们与子进程进行交互。我们可以向子进程发送输入,读取其输出,并等待其完成。
让我们来看一些示例来演示如何与子进程进行交互。
示例4:向子进程发送输入
import subprocess
result = subprocess.run("grep hello", shell=True, capture_output=True, text=True, input="Hello World\nhello\n")
print(result.stdout)
上述代码中,我们运行了一个Shell命令grep hello
,它会从输入中查找包含hello
的行。我们使用input
参数向子进程发送输入,然后将子进程的输出打印到标准输出。
示例5:等待子进程完成
import subprocess
result = subprocess.run("sleep 5", shell=True)
print("子进程完成")
上述代码中,我们运行了一个Shell命令sleep 5
,它会让子进程休眠5秒。然后我们打印子进程完成
消息。
错误处理
当运行Shell命令时,有时会出现错误。subprocess.run
函数会返回一个CompletedProcess
对象,其中包含命令的执行结果。
CompletedProcess
对象具有以下属性:
args
:运行的命令returncode
:命令的退出状态码stdout
:命令的标准输出stderr
:命令的标准错误输出
让我们来看一些示例来演示如何处理错误。
示例6:处理命令执行失败的情况
import subprocess
result = subprocess.run("command_not_found", shell=True, capture_output=True, text=True)
if result.returncode != 0: