欢迎访问宙启技术站
智能推送

如何在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模块提供了丰富的功能来处理与子进程的通信和控制,可以根据实际需求选择合适的函数来执行外部命令。