Как найти все файлы во всех подкаталогах в python - PullRequest
0 голосов
/ 07 января 2020

Я хочу вернуть список ВСЕХ файлов, расположенных с определенной точки.

Я использую python.

В настоящее время

import os
import pandas as pd
path='c://users.../'

f=[]
for currentpath, folders, files in os.walk(path):
    for file in files:
#         print(os.path.join(currentpath, file))
        f.append(file)

df=pd.DataFrame(f)
df.columns=['file_name']
print(df.shape)
df

работает нормально , но у меня ~ 70 тыс. файлов в ~ 10 тыс. подпапках / каталогах, и это невероятно медленно.

Я слышал, что glob.glob () быстрее, но:

import glob
root_dir='c://users/.../'
for filename in glob.iglob(root_dir + '**/*', recursive=True):
     print(filename)

Но это только возвращает имена подпапок.

Существует ли быстрый способ скомпилировать это в файл для дальнейшей обработки.

1 Ответ

0 голосов
/ 07 января 2020

вы можете использовать pathlib для ускорения этой операции, которая использует scandir под капотом, что намного быстрее, чем операция, которую вы используете

https://pypi.org/project/scandir/

from Pathlib import Path
def tree(directory):
    print(f'+ {directory}')
    for path in sorted(directory.rglob('*')):
        depth = len(path.relative_to(directory).parts)
        spacer = '    ' * depth
        print(f'{spacer}+ {path.name}')

tree(path) # will print out your directory tree.

если вы хотите добавить, вы можете сделать

files = [file for file in Path(path).rglob('*')]
...