Можно сделать простой класс с общедоступными полями и никакими методами в Java, но это - все еще класс и все еще обрабатывается синтаксически и с точки зрения выделения памяти точно так же, как класс. Нет никакого способа действительно воспроизвести структуры в Java.
Зачем изобретать велосипед, если можно использовать os.walk
import os
for root, dirs, files in os.walk(path):
for name in files:
print os.path.join(root, name)
os.walk - это генератор, который генерирует имена файлов в дереве каталогов, перемещаясь по дереву сверху вниз или снизу вверх
Вы можете использовать path.py . К сожалению, веб-сайта автора больше нет, но вы все еще можете загрузить код из PyPI. Эта библиотека является оболочкой для функций пути в модуле os
.
path.py
предоставляет метод walkfiles ()
, который возвращает генератор, рекурсивно повторяющий все файлы в каталог:
>>> from path import path
>>> print path.walkfiles.__doc__
D.walkfiles() -> iterator over files in D, recursively.
The optional argument, pattern, limits the results to files
with names that match the pattern. For example,
mydir.walkfiles('*.tmp') yields only files with the .tmp
extension.
>>> p = path('/tmp')
>>> p.walkfiles()
<generator object walkfiles at 0x8ca75a4>
>>>
Я согласен с решением os.walk
В чисто педантичных целях попробуйте перебрать объект-генератор вместо того, чтобы возвращать его напрямую:
def grab_files(directory):
for name in os.listdir(directory):
full_path = os.path.join(directory, name)
if os.path.isdir(full_path):
for entry in grab_files(full_path):
yield entry
elif os.path.isfile(full_path):
yield full_path
else:
print('Unidentified name %s. It could be a symbolic link' % full_path)