如何在android java中执行python代码?(链接python代码和android studio java!!)

如何在android java中执行python代码?(链接python代码和android studio java!!),java,android,python,Java,Android,Python,我想将android java与python(k近邻)链接起来 这是我用来链接python的java代码 这是python代码(knn.py) 这对我不起作用。我不知道为什么? 我尝试用另一个python代码替换knn.py代码,结果成功了。 我的python代码出了什么问题?我应该使用什么作为正确链接它们的另一种方式?请发布错误或有关什么不起作用的更多信息。没有错误。。我怎么知道?什么不起作用?你期望什么样的产出?您看到任何错误了吗?因为我在knn.py file save('neights

我想将android java与python(k近邻)链接起来 这是我用来链接python的java代码

这是python代码(knn.py)

这对我不起作用。我不知道为什么? 我尝试用另一个python代码替换knn.py代码,结果成功了。
我的python代码出了什么问题?我应该使用什么作为正确链接它们的另一种方式?

请发布错误或有关什么不起作用的更多信息。没有错误。。我怎么知道?什么不起作用?你期望什么样的产出?您看到任何错误了吗?因为我在knn.py file save('neights',neights')中的main函数中添加了save in file语句,以便在文件保存但不起作用(未保存neights文件)的情况下,我可以知道编译器是否运行它。。。。。当我在python中运行同一个knn.py时,它空闲工作并服务邻居文件。。。我不知道为什么它不能在java中工作?您的代码只是表明您能够读取文本文件(顺便说一句,这是一个python脚本)
try {
        Process p = Runtime.getRuntime().exec(
                "python C:/Users/ASUS/Desktop/sendingCode/testttt/app/knn.py");
        Scanner in = new Scanner(new InputStreamReader(
                p.getInputStream()));
        String line = "";
        while ((line = in.nextLine()) != null) {
            // display each output line form python script
            System.out.println(line);
        }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
import csv
import math
import operator
def loadDataset(filename, trainingSet=[]):
with open(filename, 'r') as csvfile:
    lines = csv.reader(csvfile)
    dataset = list(lines)
    for x in range(len(dataset)-1):
        for y in range(32):
            dataset[x][y] = float(dataset[x][y])
        trainingSet.append(dataset[x])
        #new_model = SelectFromModel(trainingSet[x], threshold=0.5)
        #print (trainingSet[x])
def euclideanDistance(instance1, instance2, length):
distance = 0
for x in range(length):
    distance += pow((instance1[x] - instance2[x]), 2)
return math.sqrt(distance)
def getNeighbors(trainingSet, testInstance, k):
distances = []
length = len(testInstance)-1
for x in range(len(trainingSet)):
    dist = euclideanDistance(testInstance, trainingSet[x], length)
    distances.append((trainingSet[x], dist))
    #print (distances[x])
distances.sort(key=operator.itemgetter(1))
neighbors = []
for x in range(k):
    neighbors.append(distances[x][0])
    #print (neighbors[x])
return neighbors
def getResponse(neighbors):
classVotes = {}
for x in range(len(neighbors)):
    response = "{0},{1},{2},{3} {4}".format(neighbors[x][0], neighbors[x][1], neighbors[x][2], neighbors[x][3], neighbors[x][4])
    if response in classVotes:
        classVotes[response] += 1
    else:
        classVotes[response] = 1
sortedVotes = sorted(classVotes.items(), key=operator.itemgetter(1), reverse=True)
return sortedVotes[0][0]
def save(name,a):
 f=open(name+'.data','wt')
 try:
     writer = csv.writer(f)
     writer.writerow(a)
 finally:
     f.close()
trainingSet=[]
testItem=[0.47968, 0.41193, 0.36192, 0.28804, 0.42813, 0.21444, 0.36239, 0.16019, -0.2966, 0.38776, -0.37455, 0.34006, 0.02174, 0.53456, -0.39664, 0.24938, 0.3724, -0.58612, -0.11107, -0.2086, 0.39568, 0.47285, -0.28453, -0.02871, -0.01756, 0.4725, -0.29967, -0.44055, 0.44525, -0.12222, -0.08769, -0.52123]
loadDataset('f.csv', trainingSet)
#print ('Train set: ' + repr(len(trainingSet)))
#print ('Test Item: ' + repr(len(testItem)))
# generate predictions
predictions=[]
k = 1
neighbors = getNeighbors(trainingSet, testItem, k)
print (neighbors)
save('neighbors',neighbors)
result = getResponse(neighbors)
predictions.append(result)
save('predicted',repr(result))
print('predicted=' + repr(result) + ', actual=' + repr(testItem))
#print (confusion_matrix(trainingSet, predictions))