Есть ли эффективный способ рекурсии в каталоге? - PullRequest
1 голос
/ 19 июня 2020

Я хочу выполнить:

  1. перебрать содержимое папки

  2. если содержимое является файлом, добавить в список

  3. если содержимое - папка, перейти к 1

  4. если имя папки «глубина» или «ir», игнорировать

Я использую python. Можете ли вы помочь?

Ответы [ 3 ]

1 голос
/ 19 июня 2020

в итоге сделал что-то вроде:

_files = []
dir = "path/to/folder"
for root, dirs, files in os.walk(dir, topdown=False):
    for name in files:
        files = os.path.join(root, name)
        if root.split("/")[-1] in ["depth", "ir"]:
            continue
        _files.append(files)
 print(_files)
0 голосов
/ 19 июня 2020

os.walk() будет рекурсивно для вас.

import os
res = []
for (root, dirs, files) in os.walk('/path/to/dir'):
    # root is the absolute path to the dir, so check if the last part is depth or ir
    if root.split("/")[-1] in ["depth", "ir"]:
        continue
    else:
        # files is a list of files
        res.extend(files)

print(res)
0 голосов
/ 19 июня 2020

Попробуйте это

import os
basepath ="<path>" 
files=[]
def loopover(path):
    contents = os.listdir(path)
    for c in contents:
        d = os.path.join(path,c)
        if os.path.isfile(d):
            files.append(c)
        if os.path.isdir(d):
            if (c=="depth" or c=="ir"):
                continue
            else:
                loopover(d)

loopover(basepath)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...