Как найти имя папки (не имя файла) из каталога, который содержит (или точное совпадение) строку (например, «Agg» или «Aggressive») в python - PullRequest
0 голосов
/ 30 марта 2020
import os
import fnmatch
from tempfile import TemporaryFile
#basepath = 'C:\\Uni_Regensburg\\ML_I\\Classification_Algorithm\\Data\\EMG\\'
#with os.scandir(basepath) as entries:
#    for entry in entries:
#        if entry.is_file():
#            print(entry.name)

for dirpath, dirnames, files in os.walk('C:\\University\\ML_I\\Classification_Algorithm\\Data\\EMG'):
    #print(f'found directories: {dirnames}')
    for folder in dirnames:
        #print(folder)
        for file_name in files:
            if fnmatch.fnmatch(file_name, '*.txt'):
                if (folder == 'Aggressive'):
                    print('Aggressive: ' + file_name)

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

1 Ответ

0 голосов
/ 30 марта 2020

Некоторые петли for размещены неправильно.

def find_folder(path):
    for dirpath, dirnames, files in os.walk(path):
        #print(f'found directories: {dirnames}')
        for folder in dirnames:
            if 'Aggressive' in folder:
                print('Aggressive: ' + path + "\\" + folder)
                return path + "\\" + folder

И тогда вы можете получить свои файлы, как вы уже сделали:

def get_files(path_to_folder):
    for dirpath, dirnames, files in os.walk(path_to_folder)
        for file_name in files:
            if fnmatch.fnmatch(file_name, '*.txt'):
                print(file_name)

Итак, в конце вы можете назвать это так:

fol = find_folder('C:\\University\\ML_I\\Classification_Algorithm\\Data\\EMG')
get_files(fol)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...