Существуют ли какие-либо методы или плагины, которые позволяют мне преобразовывать каталог с файлами и другими каталогами внутри (в том числе, если я что-то слышу внутри них) в объект на Python?

Я хочу передать список со всеми файлами и каталогами определенного пути, с именем, размером и полным путем, есть ли простой способ сделать это? Как лучше всего решить эту проблему?

Пример:

/app
 -file1
 -file2
 -dir1
  -dir2
   -file3
  -file4

Чтобы :

    obj=[
      {name=file1, size= 10kb, path='/app/file1'},
      ...,
      {name=dir1, size= 100kb, path='/app/dir1', child={name=file4, size= 10kb, path='/app/file4'} ,...}  
    ]

0
Juan Matheus 8 Мар 2021 в 21:16

1 ответ

Лучший ответ

Есть две функции Python, которые полезны для просмотра файлов в каталоге.

os.walk() будет рекурсивно просматривать все файлы и каталоги в данном файле, и дают вам полный контроль над обходом.

os.listdir() - это гораздо более простая функция, которая просто возвращает список всех имен файлов в каталоге.

Я использовал os.listdir в рекурсивной функции для создания описанной вами структуры:

import os

def list_files(directory):
    files = []
    for f in os.listdir(directory):
        file_path = os.path.join(directory, f)
        file = {
            "name": f,
            "size": os.path.getsize(file_path),
            "path": file_path,
        }
        if os.path.isdir(file_path):
            file["children"] = list_files(file_path)
        files.append(file)
    return files

print( list_files("my/directory") )

1
QuinnFreedman 8 Мар 2021 в 18:33