在Python中,你可以使用subprocess
模块来调用外部命令。subprocess
模块提供了一个简单一致的方式来启动新进程,连接它们的输入/输出/错误管道,并获取它们的返回码。
以下是一个简单的例子,展示了如何在Python中使用subprocess
模块调用外部命令:
import subprocess
# 调用外部命令并获取输出
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 打印输出结果
print("stdout:", result.stdout)
print("stderr:", result.stderr)
print("returncode:", result.returncode)
在这个例子中,我们使用subprocess.run()
函数调用了ls -l
命令。stdout=subprocess.PIPE
和stderr=subprocess.PIPE
参数表示我们希望捕获命令的标准输出和标准错误。text=True
参数表示我们希望以文本形式接收输出,而不是字节形式。
subprocess.run()
函数返回一个CompletedProcess
对象,它包含了命令的输出、错误和返回码等信息。
如果你需要更多的控制,例如实时读取输出或与子进程进行交互,你可以使用subprocess.Popen
类。以下是一个使用Popen
的例子:
import subprocess
# 创建一个子进程
process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 实时读取输出
for line in process.stdout:
print(line, end='')
# 等待子进程完成并获取返回码
returncode = process.wait()
print("returncode:", returncode)
在这个例子中,我们使用subprocess.Popen
创建了一个子进程,并通过process.stdout
实时读取输出。process.wait()
方法会等待子进程完成,并返回其返回码。