1.运行环境
1.python运行环境
anaconda
2.QT
3..配置好python编译器(需要导入项目所需要的库 numpy pandas sklearn torch..等)
4.首先在cmd命令行里面 使用配置好的python编译器 运行项目
目前需要输入的参数是写死在项目里面的,输出的结果是显示在命令行(cmd)上面的
python D:\Pycharm_Code\....\main.py(编译器 项目文件的所在路径)
2.脚本输入参数和输出结果
该项目需要传入的参数(处理的数据文件的绝对路径)
该项目输出处理完数据之后的算法指标(precision等)结果
3.python文件怎么接收命令行传入的参数
定义Test.py文件按如下代码进行测试
import argparse
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--InputArgs', nargs='+')
args = parser.parse_args()
print(args.InputArgs)
在cmd窗口运行如下代码:
//解释器 脚本文件所在目录 接收参数变量 参数
python D:/Pycharm_Code/.../Test.py --InputArgs 111 2355 222
程序输出结果
['111', '2355', '222']
4.Qt怎么调用cmd命令行 执行python脚本文件 传入.py文件所需的参数,以及收集.py文件的运行结果
5.mainwindow.cpp的代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
#include <QProcess>
#include <QDebug>
#include<QMessageBox>
#include<QTextCodec>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//Qprocess调用外部程序执行
m_process = new QProcess(this);
connect(m_process,
SIGNAL(readyReadStandardOutput()),
this,
SLOT(onReadData()));
m_process->setReadChannel(QProcess::StandardOutput);
//使用cmd命令行执行
QString command = "cmd";
//QstringList args 保存相关的变量
QStringList args;
args.append("/c");
args.append("python");//python解释器 安装了脚本文件运行所需的依赖包
args.append("D:\\Pycharm_Code\\...\\main.py"); //脚本文件的主文件
args.append("--InputArgs");//脚本文件接收参数的变量
args.append("D:\\Pycharm_Code\\...\\a.csv");//脚本文件接收的数据文件的路径(这里提供的是文件的绝对路径) 进行处理
args.append("D:\\Pycharm_Code\\...\\b.csv");
args.append("D:\\Pycharm_Code\\...\\c.csv");
args.append("D:\\Pycharm_Code\\...\\d.csv");
args.append("D:\\Pycharm_Code\\...\\e.csv");
args.append("D:\\Pycharm_Code\\...\\f.csv");
m_process->start(command,args);
}
//结果输出函数
void MainWindow::onReadData()
{
QTextCodec* gbkCodec = QTextCodec::codecForName("GBK");
QString result = gbkCodec->toUnicode(m_process->readAll());
//输出main.py输出的结果
string cstring = string((const char *)result.toLocal8Bit().constData());
cout<<cstring<<endl;
}
MainWindow::~MainWindow()
{
delete ui;
}