python应用笔记之subprocess实现makefile编译

        subprocess是Python的一个模块,用于生成新的进程;这里介绍如何利用该模块实现软件工程makefile的编译。

import subprocess

def cmd_subprocess(prj_path, prj_cmd):
    process = subprocess.Popen(prj_cmd, cwd=prj_path, shell=True)
    return process

        首先基于subprocess模块创建上述函数,其中“prj_path”指软件工程Makefile的路径,“prj_cmd”指要执行的命令,以字符串形式,如"make clean && make bin "

        假设我在E:\Firmware路径下有有一个软件工程sdk,该工程目录下有Makefile文件,该Makefile文件里有以下几个伪命令。

.PHONY : bin hex clean

        则可以按照以下python代码实现上述工程的编译。

prj_path = "E:\\Firmware\\sdk"
prj_cmd = "make clean && make bin "

p1 = cmd_subprocess(prj_path, prj_cmd)
    p1.wait()
    if p1.returncode != 0:
        os._exit(1)

        后续扩展可根据项目需求,利用python强大的数据处理能力,事项bin文件后处理功能,如bin转hex,bin增加头文件信息等。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python 3.9.0版本的subprocess模块是Python官方推荐使用的方法来执行外部命令的模块。subprocess模块包含了多个函数和类,其中最常用的方法是subprocess.run()。该方法的函数原型为:subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None, **other_popen_kwargs)。 通过subprocess模块,可以执行各种外部命令,比如adb命令、ls命令、cd命令等等。它可以返回命令的输出和错误信息,并且可以设置超时时间、检查返回码等。 下面是一个使用subprocess模块执行命令的例子: ```python import subprocess def cmd(command): subp = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding="utf-8") subp.wait(2) if subp.poll() == 0: print(subp.communicate()[1]) else: print("失败") cmd("ls /root") cmd("exit 1") ``` 以上例子中,通过subprocess.Popen()函数创建一个子进程并执行命令。使用stdout=subprocess.PIPE和stderr=subprocess.PIPE可以分别获取命令的标准输出和错误输出。可以根据命令的返回码来判断命令是否执行成功。 总结来说,Python 3.9.0版本的subprocess模块提供了方便、灵活的方法来执行外部命令,并且可以获取命令的输出和错误信息,以及设置超时时间和检查返回码等功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡尔二叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值