返回

Python 中执行程序或调用系统命令:终极指南

python

在 Python 中执行程序或调用系统命令

引言

在 Python 中,执行程序或调用系统命令的能力对于扩展脚本的功能至关重要。本指南将探讨两种执行此操作的方法:os 模块和 subprocess 模块。我们还将提供示例代码来说明其用法。

使用 os 模块

os 模块提供了与操作系统交互的函数。os.system() 函数可以执行系统命令并返回其退出状态。这个方法很简单,但功能有限。

import os

# 执行 "ls -l" 命令
os.system("ls -l")

使用 subprocess 模块

subprocess 模块提供了更高级的函数来管理子进程。subprocess.call() 函数可以执行程序或调用系统命令,同样返回其退出状态。该模块还允许捕获命令的输出,这在需要处理结果的情况下非常有用。

import subprocess

# 执行 "ls -l" 命令并捕获输出
process = subprocess.Popen("ls -l", stdout=subprocess.PIPE)
output, error = process.communicate()

# 输出命令输出
print(output.decode("utf-8"))

选择合适的方法

os.system() 函数更简单,但 subprocess 模块提供了更多控制和灵活性。对于需要捕获输出或管理子进程的复杂场景,推荐使用 subprocess 模块。

执行 Python 脚本

你可以使用 subprocess 模块执行 Python 脚本。

import subprocess

# 执行 "script.py" 脚本
subprocess.call("python script.py", shell=True)

调用系统命令

你还可以使用 subprocess 模块调用系统命令。

import subprocess

# 调用 "date" 命令
process = subprocess.Popen("date", stdout=subprocess.PIPE)
output, error = process.communicate()

# 输出命令输出
print(output.decode("utf-8"))

结论

Python 提供了通过 os 模块和 subprocess 模块执行程序或调用系统命令的强大功能。根据你的需要选择合适的方法,并利用这些模块的灵活性来增强脚本。

常见问题解答

  • 如何在 Python 中捕获系统命令的输出?
    • 使用 subprocess 模块中的 communicate() 方法。
  • 我可以用 Python 执行 Bash 脚本吗?
    • 是的,使用 subprocess 模块并提供脚本路径。
  • 如何使用 Python 更改工作目录?
    • 使用 os.chdir() 函数。
  • 如何用 Python 读写文件?
    • 使用 open() 函数。
  • 如何在 Python 中创建新进程?
    • 使用 subprocess.Popen() 函数。