Python subprocess 执行命令行
在Python编程中,我们经常需要与命令行交互,执行外部程序或者Shell命令。Python的subprocess
模块提供了一个简单而强大的方法来执行命令行操作。本文将介绍如何使用subprocess
模块执行命令行,并提供一些常见的用例示例。
subprocess模块简介
subprocess
模块是Python标准库中用于创建和管理子进程的模块。它提供了使用子进程执行命令行的功能,可以替代os.system
和os.popen
等旧式的命令行操作函数。
使用subprocess
模块,可以执行命令行命令并获取输出、等待命令执行完成、传递输入给命令等。它还可以捕获命令行命令的标准输出和错误输出。
执行命令行命令
要执行命令行命令,我们可以使用subprocess.run()
函数。以下是一个简单的示例,演示了如何执行命令行命令并获取输出:
import subprocess
result = subprocess.run([ls, -l], capture_output=True, text=True)
print(result.stdout)
上述代码执行了ls -l
命令,并将输出打印到控制台。capture_output=True
参数用于捕获命令的标准输出和错误输出,text=True
参数用于将输出转化为文本字符串。result.stdout
属性包含了命令的标准输出。
如果要执行的命令是一个字符串,而不是列表形式的命令和参数,可以使用shell=True
参数来执行命令。以下是一个示例:
import subprocess
result = subprocess.run(ls -l, capture_output=True, text=True, shell=True)
print(result.stdout)
传递输入给命令
有时候,我们需要向命令行命令传递输入。subprocess.run()
函数的input
参数可以用于传递文本输入给命令。以下是一个示例:
import subprocess
result = subprocess.run([grep, apple], capture_output=True, text=True, input=banana\napple\norange\n)
print(result.stdout)
上述代码执行了grep apple
命令,并将输入的文本字符串传递给命令。result.stdout
将包含命令的输出,即匹配到的包含"apple"的行。
等待命令执行完成
默认情况下,subprocess.run()
函数会等待命令执行完成。如果命令执行成功,函数将返回一个CompletedProcess
对象,包含命令的执行结果。如果命令执行失败,函数将引发一个CalledProcessError
异常。
以下是一个示例,演示了如何等待命令执行完成并获取执行结果:
import subprocess
try:
result = subprocess.run([ls, -l], check=True, capture_output=True, text=True)
print(result.stdout)
except subprocess.CalledProcessError as e:
print(Command execution failed:, e)
上述代码中的check=True
参数用于在命令执行失败时引发异常。如果不需要引发异常,可以简单地删除该参数。
数学公式
在上面的示例中,我们展示了如何使用subprocess
模块执行命令行命令。数学公式可以通过使用Markdown语法进行标识,例如$ y = mx + c $
表示一条直线的方程。
结论
通过使用Python的subprocess
模块,我们可以方便地执行命令行命令,并获取命令的输出。本文提供了一些常见的用例示例,可以帮助你更好地理解如何使用subprocess
模块。希望本文对你在Python编程中的命令行操作有所帮助。
参考文献:
- [Python subprocess documentation](