【QT】linux 项目中QProcess调用命令行命令执行python脚本

目录

1、使用场景

2、python脚本

3、QT 中用QProcess命令执行python脚本


1、使用场景

linux下,qt项目中,想要在项目中利用QProcess执行命令行的命令(此命令是执行一个.py的脚本)并获取输出结果。

2、python脚本

我自己写了一个脚本,脚本的内容是创建一条带有自定义参数的命令,使其在执行.py脚本时可以带参数,如下示例,执行脚本后会打印出固定字符串

.py脚本执行示例
普通.py脚本执行: ./test.py
带参数脚本执行: ./test.py --parameter1

这里我的自定义参数设置的是--getinfo,打印输出的是“.python success!!!” 

.py脚本内容

#!/usr/bin/python
import getopt
import sys

if __name__ == '__main__':
    try:
        options, args = getopt.getopt(sys.argv[1:], "-i", ['getinfo'])
        for name, value in options:
            if name in ('-i', '--getinfo'):
                print(".python success!!!!")
    except getopt.GetoptError:
        print("error!")

脚本在终端内直接带参数运行的结果为:

3、QT 中用QProcess命令执行python脚本

在QT项目中,我利用QProcess来执行这条自定义带参数的命令,并等待结果

QProcess使用可以看下面这篇例子,这里不做过多介绍,就是一个调用系统命令的qt库

【Qt】QProcess的使用总结_Antrn的博客-CSDN博客_qprocess

#include <QFile>
#include <QDebug>
#include <QProcess>

QFile file("/etc/ksc-defender/securityPatrol/case/"); //判断存放.py脚本的路径是否存在
    if(file.exists()){
        QStringList options;
        QString path;
        path = "/etc/ksc-defender/securityPatrol/case/"+ m_strName;  
        //m_strName是.py的名字,如test.py

        options <<  path << "--getinfo"; //这里是实际在终端要敲的命令,如果中间有空格,要用 << 分隔开

        QProcess process; //执行终端命令的,要记得加头文件

        if(m_strName.contains(".py")){ //判断文件是否是以.py结尾的python文件
            process.start("/usr/bin/python3", options);  //start的第一个参数我理解为解释器的位置,第二个参数就是实际需要执行的命令
        }
        process.waitForFinished(); //等待运行结束,以不阻塞的形式
        process.waitForReadyRead();
        QString msg = process.readAllStandardOutput();  //命令行执行结果

        QString error =  process.readAllStandardError(); //命令行执行出错的提示
        if(!error.isEmpty()){
            qDebug()<<"执行脚本错误:"<<error; //打印出错提示
        }

        process.close();
    }else{
        qDebug()<<".py或shell文件不存在";
    }

运行结果就是可以收到跟命令行执行一样的结果

#END

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Wyn_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值