Как добавить указанные c файлы из серии папок в массив? - PullRequest
0 голосов
/ 01 мая 2020

Пока мне удалось собрать все файлы из ряда папок, используя следующую команду:

path = r'C:\Users\keefr\Documents\Data\Pulse Characterisation\sample 7' 
subfolders = [f.path for f in os.scandir(path) if f.is_dir()]

for sub in subfolders:
    for f in os.listdir(sub):
        print(f)
        files = [i for i in f if os.path.isfile(os.path.join(f,'*.txt')) and 'data' in f]

Где f выводит имена всех файлов. Что я хочу сделать, это взять только определенные файлы из этого (начинается с 'data' и представляет собой файл .txt) и поместить их в массив с именем files. Последняя строка в приведенном выше коде - это место, где я пытался это сделать, но всякий раз, когда я печатаю файлы, это все равно пустой массив. Любые идеи, где я иду не так и как это исправить?

Обновление Я добился определенного прогресса, я изменил последнюю строку на:

if os.path.isfile(os.path.join(sub,f)) and 'data' in f:
    files.append(f)

Теперь у меня есть массив с правильными именами файлов. Проблема в том, что есть смесь файлов .meta, .index и .txt, а мне нужны только файлы .txt. Какой лучший способ отфильтровать другие типы файлов?

1 Ответ

0 голосов
/ 01 мая 2020

Я бы, наверное, сделал это так. Учитывая, что f является именем файла и является строкой, python имеет функции startswith() и endswith(), которые можно применять для конкретного соответствия вашим критериям , начиная с data и заканчивая .txt , Если мы найдем такой файл, мы добавим его в file_list. Если вам нужен полный путь в file_list, я надеюсь, что вы сможете сделать это изменение.

import os
path = r'C:\Users\keefr\Documents\Data\Pulse Characterisation\sample 7'
subfolders = [f.path for f in os.scandir(path) if f.is_dir()]

file_list = []
for sub in subfolders:
    for f in os.listdir(sub):
        if (f.startswith("data") and f.endswith(".txt")):
            file_list.append(f)
print(file_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...