如何在Python中运行外部程序或命令
发布时间:2024-01-02 04:02:40
在Python中,可以使用subprocess模块来运行外部程序或者命令。subprocess模块提供了多个函数来处理与子进程的通信和控制。下面是一个使用subprocess模块运行外部命令的示例:
import subprocess # 使用subprocess.run()函数执行外部命令 result = subprocess.run(['ls', '-l'], capture_output=True, text=True) # 获取命令的标准输出 output = result.stdout print(output) # 获取命令的返回值 exit_code = result.returncode print(exit_code)
在上面的示例中,我们使用subprocess.run()函数运行了一个ls -l命令,capture_output=True参数用于将命令的输出捕获到stdout属性中,text=True参数用于将输出以文本形式返回。然后,我们可以通过result.stdout获取命令的标准输出,通过result.returncode获取命令的返回值。
subprocess模块还提供了其他的函数用于执行外部命令,例如:
- subprocess.call():执行外部命令并等待其完成。
- subprocess.check_output():执行外部命令并返回其输出结果。
下面是使用这些函数的一些示例:
import subprocess # 使用subprocess.call()函数执行外部命令 result = subprocess.call(['ls', '-l']) # 使用subprocess.check_output()函数执行外部命令并获取输出 output = subprocess.check_output(['ls', '-l'], text=True) print(output)
除了直接执行外部命令之外,subprocess模块还提供了与子进程的交互功能。例如,可以通过subprocess.Popen()函数创建一个子进程对象来执行外部命令,并使用该对象的方法进行进程通信和控制。
下面是一个使用subprocess.Popen()函数执行外部命令,并读取其输出的示例:
import subprocess
# 使用subprocess.Popen()函数执行外部命令,并读取其输出
process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
# 读取命令的输出
output, _ = process.communicate()
# 输出命令的结果
print(output.decode('utf-8'))
在上面的示例中,我们使用subprocess.Popen()函数创建了一个子进程对象来执行ls -l命令,并将命令的输出通过管道传送到主进程中。然后,我们通过调用communicate()方法读取命令的输出,最后将输出以文本形式打印出来。
以上是在Python中运行外部程序或命令的基本方法和示例。subprocess模块提供了丰富的功能来处理与子进程的通信和控制,可以根据实际需求选择合适的函数来执行外部命令。
