Есть ли способ получить N самых старых имен файлов в каталоге, не выбирая все имена файлов (предпочтительно в python или в оболочке) - PullRequest
0 голосов
/ 30 января 2020

Я использую приведенный ниже код для получения json имен файлов в каталоге.

import glob
jsonFiles = glob.glob(folderPath+"*.json")

Многие новые json файлы создаются в каталоге в секунду (скажем, 100 / с). Обычно это работает нормально, но застревает, когда нет. файлов большой (~ 150000) и занимает много времени (3 - 4 минуты) для получения имен файлов. Это может быть из-за большой входящей скорости (не уверен).

Есть ли альтернативный подход для получения имен файлов ЭФФЕКТИВНО с помощью команды python или linux. Получение старейших 1000 имен файлов тоже будет работать. Мне не нужны все имена файлов одновременно.

Я наткнулся на следующую команду оболочки:

ls -Art | head -n 1000

Поможет ли это? Сначала перечисляются все имена файлов, а затем извлекается 1000 самых старых записей? Заранее спасибо.

1 Ответ

0 голосов
/ 01 февраля 2020

Найдено scandir, чтобы быть полезным.

# Python version 2.x
import scandir
ds = scandir.scandir('./files/')
fileNames = []
count=0
for file in ds:
    count+= 1
    fileNames.append(file.name)
    if count==1000:
        break

# Python version 3.x
import os
ds = os.scandir('./files/')
...

Это дает 1000 случайных имен файлов в каталоге, не просматривая все имена файлов. Если мы не вырвемся из l oop, он продолжит предоставлять имена файлов в случайном порядке (имя файла после повторения не повторяется).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...