Python 中调用终端输入命令

在 Python 中,我们经常需要与终端进行交互,执行一些系统命令或外部程序。Python 提供了多种方式来实现这一功能,例如使用 os 模块、subprocess 模块等。本文将主要介绍如何使用 subprocess 模块来调用终端输入命令,并提供一些常用的示例代码。

subprocess 模块简介

subprocess 模块是 Python 中用于创建新进程,与这些新进程进行交互的模块。它提供了更高级别的接口,用于处理子进程的输入、输出和错误。通过 subprocess 模块,我们可以执行终端命令,并获取命令的输出结果。

subprocess 模块的常用函数

下面是 subprocess 模块中的一些常用函数:

  • subprocess.run():执行命令,并返回命令的执行结果和输出。
  • subprocess.call():执行命令,并返回命令的执行结果。
  • subprocess.check_output():执行命令,并返回命令的输出结果。

使用 subprocess.call() 调用终端命令

下面是使用 subprocess.call() 函数调用终端命令的示例代码:

import subprocess

# 调用 ls 命令查看当前目录的文件列表
subprocess.call(["ls"])

# 调用 echo 命令输出文本
subprocess.call(["echo", "Hello, World!"])

在上述示例中,我们使用 subprocess.call() 函数来执行终端命令。函数的参数是一个列表,列表的每个元素是命令的一部分。例如,subprocess.call(["ls", "-l"]) 将执行 ls -l 命令。

使用 subprocess.run() 调用终端命令

subprocess.run() 函数是 Python 3.5 之后新增的函数,它是 subprocess.call() 函数的升级版。下面是使用 subprocess.run() 函数调用终端命令的示例代码:

import subprocess

# 调用 ls 命令查看当前目录的文件列表
result = subprocess.run(["ls"], capture_output=True, text=True)
print(result.stdout)

# 调用 echo 命令输出文本
result = subprocess.run(["echo", "Hello, World!"], capture_output=True, text=True)
print(result.stdout)

在上述示例中,我们使用 subprocess.run() 函数执行终端命令,并通过 capture_output=True 参数来捕获命令的输出结果。通过 text=True 参数,我们将命令的输出结果以文本形式返回。

使用 subprocess.check_output() 调用终端命令

subprocess.check_output() 函数是 subprocess.run() 函数的另一种形式,它执行命令并返回命令的输出结果。下面是使用 subprocess.check_output() 函数调用终端命令的示例代码:

import subprocess

# 调用 ls 命令查看当前目录的文件列表
result = subprocess.check_output(["ls"], text=True)
print(result)

# 调用 echo 命令输出文本
result = subprocess.check_output(["echo", "Hello, World!"], text=True)
print(result)

在上述示例中,我们使用 subprocess.check_output() 函数执行终端命令,并通过 text=True 参数来指定输出结果以文本形式返回。

总结

本文介绍了如何在 Python 中调用终端输入命令,并提供了使用 subprocess 模块的示例代码。通过 subprocess.call()subprocess.run()subprocess.check_output() 等函数,我们可以方便地执行终端命令,并获取命令的输出结果。在实际应用中,我们可以利用这些函数来完成一些与系统交互的任务,扩展 Python 的功能。