Неверное имя каталога Spyder Python - PullRequest
0 голосов
/ 25 января 2019

Я пытался выяснить, как решить эту проблему.

 File "<ipython-input-27-0b2b3f4a72cc>", line 5, in <module>
    X_BW, y_BW = setAnnotation(path, 1, nclusters = clusters, clf = clf)

  File "<ipython-input-26-6f5632d48ec5>", line 211, in setAnnotation
    for file in os.listdir(newPath):

NotADirectoryError: [WinError 267] Invalid directory name: 'C:/img/soft/leftshoe10.jpg'

Я использую эту функцию, чтобы установить аннотацию для всех изображений, которые я посылаю по пути.

def setAnnotation(path, representation, nclusters = None, clf = None, centroids = None, gmm = None, alpha = None):
    c = 0
    for folder in os.listdir(path):
        newPath = os.path.join(path, folder).replace("\\", "/")
        annotation = os.path.basename(newPath)
        print(newPath)
        for file in os.listdir(newPath):
            if file.endswith(".jpg"):
                if c == 0:
                    if representation == 1:
                        X = getBOF(os.path.join(newPath, file), clf, nclusters)
                        print("PRUEBA CON BOW")
                    elif representation == 2:
                        X = getVLAD(os.path.join(newPath, file), clf, centroids, alpha)
                        print("PRUEBA CON VLAD")
                    elif representation == 3:
                        X = getFV(os.path.join(newPath, file), gmm)
                        y = annotation
                        c = c + 1
                        print("PRUEBA CON FV")
                else:
                    if representation == 1:
                        X = np.vstack((X, getBOF(os.path.join(newPath, file), clf, nclusters)))
                        print("PRUEBA CON BOW")
                    elif representation == 2:
                        X = np.vstack((X, getVLAD(os.path.join(newPath, file), clf, centroids, alpha)))
                        print("PRUEBA CON VLAD")
                    elif representation == 3:
                        X = np.vstack((X, getFV(os.path.join(newPath, file), gmm)))
                        print("PRUEBA CON FV")
                y = np.concatenate((y, annotation), axis = None)
    print("Anotación finalizada.")
    return(X,y)

Здесь я задаю путь для использования с вышеуказанной функцией.

path = "C:/img/soft"

И здесь я вызываю функцию setAnnotation(), описанную ранее.

X_BW, y_BW = setAnnotation(path, 1, nclusters = clusters, clf = clf)

Точки ошибкина следующую строку в функции setAnnotation():

X = getVLAD(os.path.join(newPath, file), clf, centroids, alpha)

I Что я ищу, так это использование .replace("\\", "/") после os.path.join в функции setAnnotation().Но я не знаю, почему он указывает на строку 211, поскольку я использую 1 в качестве параметра representation, который должен вводиться только в первом условном выражении.

¿Есть идеи?

1 Ответ

0 голосов
/ 25 января 2019

Как уже упоминалось выше.Я решил проблему с изменением пути.C:/img/.Таким образом, функция, отвечающая за чтение файлов, просто начинает поиск подпапок после /img, а файлы заканчиваются .jpg, избегая попытки поместить файл JPG в качестве подпапки.

...