Python os.listdir () не возвращает некоторые файлы - PullRequest
2 голосов
/ 07 августа 2020

У меня есть функция python, которая проверяет время изменения папки с помощью os.stat(), а затем выполняет os.listdir() этой папки.

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

Когда функция python выбирает файлы за одну и ту же миллисекунду, наблюдается, что os.listdir() предоставляет только 2 из 3 созданных файлов. Почему это так?

Среда:

ОС: Red Hat Enterprise Linux Серверный выпуск 7.6

Python Версия: Python 3.6.8

Файловая система: xfs

Пример кода

import os
import sys
import time

filelist=list()
last_mtime=None


def walkover():
    path_to_check="/path/to/check"
    curr_mtime=os.stat(path_to_check).st_mtime_ns
    global last_mtime
    global filelist
    if last_mtime == None or curr_mtime > last_mtime:
        for file in os.listdir(path_to_check):
            if file not in filelist:
                filelist.append(file)
        last_mtime = curr_mtime
        print ("{} modified at {}".format(path_to_check, last_mtime))


Функция вызывается для поддержки списка файлов в определенный момент времени. Случай if присутствует, чтобы избежать множественных вызовов os.listdir().

Edit:

Файлы - это файлы «.rsp», которые создаются ниндзя, когда «.o» собирается получить built.

Так как моя машина имеет несколько ядер (16), ниндзя запускается из cmake с «--parallel 16». Это вызовет одновременное выполнение 16 компиляций.

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