linux qt 项目中QProcess调用命令行命令执行python脚本

简介: linux 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!")

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

image.png



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


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

#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文件不存在";
    }
相关文章
|
11天前
|
Web App开发 Linux 网络安全
工作中常用到的Linux命令
工作中常用到的Linux命令
|
8天前
|
NoSQL Linux Shell
常用的 Linux 命令
常用的 Linux 命令
30 9
|
1天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
9 0
|
2天前
|
域名解析 网络协议 Linux
Linux 中的 Nslookup 命令怎么使用?
【4月更文挑战第12天】
21 6
Linux 中的 Nslookup 命令怎么使用?
|
3天前
|
运维 网络协议 Unix
18.系统知识-Linux常用命令
18.系统知识-Linux常用命令
|
4天前
|
网络协议 Ubuntu Linux
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
|
4天前
|
Linux Go
Linux命令Top 100驱动人生! 面试必备
探索Linux命令不再迷茫!本文分10部分详解20个基础命令,带你由浅入深掌握文件、目录管理和文本处理。 [1]: <https://cloud.tencent.com/developer/article/2396114> [2]: <https://pan.quark.cn/s/865a0bbd5720> [3]: <https://yv4kfv1n3j.feishu.cn/docx/MRyxdaqz8ow5RjxyL1ucrvOYnnH>
48 0
|
7天前
|
缓存 运维 监控
Linux系统监控利器:探索常用命令及数据保存技巧
Linux系统监控利器:探索常用命令及数据保存技巧
24 4
Linux系统监控利器:探索常用命令及数据保存技巧
|
10天前
|
Linux 索引
linux 文件查找 和文件管理常用命令
linux 文件查找 和文件管理常用命令
19 0
|
10天前
|
安全 Unix Linux
一、linux 常用命令之 linux版本信息 系统管理与设置 持续更新******
一、linux 常用命令之 linux版本信息 系统管理与设置 持续更新******
14 0