Моя задача - обучить модели ML. Я хочу выдать файлы, чтобы избежать проблем с памятью в будущем. Я наткнулся на решение, которое я немного скорректировал. Но модификация не совсем соответствует моим потребностям. Предположим, что структура папок у меня выглядит следующим образом:
.. /
A /
2014-01-01
2014-01-05
2014-01-06
/ B
2014-01-02
2014-01-06
...
Так по сути в папке: test, у меня есть подкаталоги вроде: A, B .. и т. Д.
В каждом из этих подкаталогов у меня есть даты: 2014-01-01 и т. Д.
Мне нужен мой генератор, чтобы выдавать мне файлы в порядке даты и времени, игнорируя сами каталоги (порядок подкаталогов не имеет значения, я могу сначала получить файлы из B, а затем из A, не имеет значения) .
У меня есть следующий код atm:
def sort_func(x):
x_ = x
x = str(x)
# dates - files
try:
return datetime.datetime.strptime(x, "%Y-%m-%d")
# folder. Ignore
except ValueError as e:
return x_
except Exception as e:
raise(e)
p = pathlib.Path('../datasets/train/')
a = sorted(p.glob('**/*'), key=sort_func)
И это выглядело бы примерно так:
[PosixPath('../datasets/train/A'),
PosixPath('../datasets/train/A/2014-01-01'),
PosixPath('../datasets/train/A/2014-01-02'),
PosixPath('../datasets/train/A/2014-01-03'),
...]
т.е. Мне не нужен первый путь и все пути к каталогам.
Как мне их опустить?
РЕДАКТИРОВАТЬ: На самом деле, кажется, что glob возвращает список ... p.glob('*/*')
, кажется, делает трюк, но sorted(.)
дает мне список вместо того, чтобы выдавать файлы один за другим