Пакетный файл не выполняет сценарий Python (из laravel) - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь запустить командный файл в Laravel, который собирается выполнить скрипт на Python. Дело в том, что он работал с самого начала, когда скрипт python выполнял простую задачу: извлечение имени файла CSV-файла из базы данных, а затем сохранение его в текстовом файле. Полученный файл был в общей папке. Но затем, когда я изменил сценарий python для выполнения сценария ACP, ничего не произошло, когда я запустил пакетный файл.

Вот некоторые объяснения того, что я на самом деле пытаюсь сделать: Сценарий python извлекает имя файла из базы данных, затем запускает процесс ACP. Пакетный файл, скрипт Python и файл CSV находятся в одном каталоге. Кроме того, имейте в виду, что оба сценария python и batch работают нормально при нормальном выполнении (не из Laravel).

Код пакетного файла [runcript.bat]

@echo off
"python path\python.exe" "script path\pythonScript.py"
PAUSE

Код Python: [PythonScript.py]

#!/usr/bin/env python
import sys
import mysql.connector
import numpy as np
import pandas as pd

#Connect to database
db=mysql.connector.connect(host="localhost",user="root",passwd="",db="databaseName")

#get the filename
cur = db.cursor()
cur.execute("select nom_fichier from posts where used = 'on'")
i = cur.fetchall()
k = str(i)
thefilename = k[3:-4]

#read the file
thefile=pd.read_csv(thefilename)

#Label Encoder
from sklearn.preprocessing import LabelEncoder
lb_make = LabelEncoder()
for i in thefile.head(0):
    if (thefile[i].dtypes != 'int64') | (thefile[i].dtypes != 'float64'):
        thefile[i] = lb_make.fit_transform(thefile[i])

for i in thefile.head(0):
    if (thefile[i].dtypes != 'float64'):
        thefile[i] = thefile[i].astype(float)

y_file = pd.DataFrame()
y_file = pd.DataFrame(columns=['target'])

y_file['target'] = thefile['Churn']
thefile = thefile.drop(columns='Churn')

#Fit Data
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(thefile)

scaled_data = scaler.transform(thefile)

#PCA
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit(scaled_data)
x_pca = pca.transform(scaled_data)

#Save result is csv file
np.savetxt("mydataACP.csv", x_pca, delimiter=",")

cur.close()
db.close()

Функция Laravel Controller, которая выполняет командный файл

    public function LabelEncoder(){
        exec('path\runScript.bat');
    }

Просмотр сценария

<a href="{{action('trainingsController@LabelEncoder')}}">ACP</a>

Так что я ожидаю, что это файл "mydataACP.csv" в публичном каталоге. Однако при выполнении командного файла ничего не происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...