在Python中运行外部程序(可执行文件)通常可以使用subprocess
模块。subprocess
模块允许你创建新的进程、连接到它们的输入/输出/错误管道,并获取它们的返回代码。以下是一个简单的示例,展示了如何使用subprocess
模块运行外部程序:
import subprocess
# 运行外部程序并等待它完成
result = subprocess.run(["ls", "-l"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 输出结果
print("返回代码:", result.returncode)
print("标准输出:", result.stdout)
print("标准错误:", result.stderr)
在这个示例中,我们使用subprocess.run()
函数运行ls -l
命令。我们将stdout
和stderr
设置为subprocess.PIPE
,以便捕获程序的输出。text=True
表示以文本形式(而不是字节串)返回输出。
subprocess.run()
函数返回一个subprocess.CompletedProcess
对象,其中包含有关程序执行的信息,例如返回代码、输出和错误。
如果你需要与外部程序进行交互,例如发送输入或实时接收输出,可以使用subprocess.Popen
类。例如:
import subprocess
# 运行外部程序并等待它完成
process = subprocess.Popen(["ping", "www.google.com"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 实时读取输出
while True:
output = process.stdout.readline()
if output == '' and process.poll() is not None:
break
if output:
print(output.strip())
# 获取返回代码
print("返回代码:", process.returncode)
在这个示例中,我们使用subprocess.Popen()
函数运行ping www.google.com
命令。我们将stdout
和stderr
设置为subprocess.PIPE
,以便捕获程序的输出。text=True
表示以文本形式(而不是字节串)返回输出。
然后,我们使用process.stdout.readline()
实时读取输出,直到程序完成。最后,我们获取程序的返回代码。
云+社区技术沙龙[第14期]
微搭低代码直播互动专栏
Elastic 实战工作坊
Elastic 实战工作坊
云+社区开发者大会 长沙站
云+社区技术沙龙[第17期]
DBTalk技术分享会
云+社区开发者大会(苏州站)
领取专属 10元无门槛券
手把手带您无忧上云