Я пытаюсь использовать pythons os.walk для перетаскивания файлов из произвольной структуры каталогов:
matches = []
for root, dirnames, filenames in os.walk(path):
for filename in fnmatch.filter(filenames, name):
matches.append(os.path.join(root, filename))
print matches
, это приятно перетаскивает все файлы, но я также хотел бы иметь возможность поддерживать фактическиеструктура папок, то есть я бы хотел пройтись по подпапкам по подпапкам, чтобы я действительно знал, какое имя файла принадлежит какой подпапке.возможно ли это с os.walk или мне придется свернуть свою собственную функцию?
Чтобы уточнить мой вопрос: я хочу создать внутреннее дерево программ для каталогов, которые я анализирую, так что я бы хотел фактически проанализироватьдерево каталогов рекурсивным способом, так что я сталкиваюсь с каждым подкаталогом и файлом только один раз, то есть:
псевдокод:
def createAndParseSubDir(path):
ret = []
files = glob(path)
for file in files:
if isDir(file):
ret.append(createAndParseSubDir(file))
else:
ret.append(file)
return ret
hierarchy = createAndParseSubDir(myRoot)
РЕДАКТИРОВАТЬ: В итоге я использовалпохожая рекурсивная функция, подобная приведенному выше псевдокоду, для обеспечения синтаксического анализа файлов / каталогов в древовидной форме.