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文件不存在";
    }
相关文章
|
3月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
二、Linux文本处理与文件操作核心命令
|
3月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
724 57
|
3月前
|
异构计算 Python
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
353 1
|
2月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
491 2
|
3月前
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
323 0
Linux内存问题排查命令详解
|
3月前
|
人工智能 Shell Python
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
239 0
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
|
安全 网络协议 Linux
【专栏】Linux系统中ping命令的使用,包括其基本语法、输出信息、常用参数及高级用法
【4月更文挑战第28天】本文详细介绍了Linux系统中ping命令的使用,包括其基本语法、输出信息、常用参数及高级用法。通过ping,用户可测试网络连通性、诊断故障及评估性能。此外,文章还讨论了ping在不同协议、模拟网络环境及与其他命令结合使用时的场景。注意防火墙和网络环境可能影响ping结果,理解错误信息有助于网络问题排查。熟练掌握ping命令,能助你成为Linux网络专家。不断学习和实践,提升网络技能,为构建稳定网络环境贡献力量。
1107 0