如何从包含(或完全匹配)Python中字符串(例如“ Agg”或“ Aggressive”)的目录中查找文件夹名称(而非文件名)

问题描述 投票:0回答:1
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,然后仅过滤出文本文件。我尝试了这段代码,但是当我运行这段代码时,它什么也不返回。

python-3.x directory string-matching
1个回答
0
投票

有一些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)
© www.soinside.com 2019 - 2024. All rights reserved.