Питон os.stat (имя_файла) .st_size против os.path.getsize (имя_файла)

У меня есть два куска кода, которые предназначены для того, чтобы делать одно и то же - сидеть в цикле, пока файл не будет записан. Оба они в основном используются для файлов, поступающих через FTP / SCP.

Одна версия кода делает это с помощьюos.stat()[stat.ST_SIZE]:

size1,size2 = 1,0
while size1 != size2:
  size1 = os.stat(file_name)[stat.ST_SIZE]
  time.sleep(300)
  size2 = os.stat(file_name)[stat.ST_SIZE]

Другая версия делает это сos.path.getsize():

size1,size2 = 0,0
while True:
  size2 = os.path.getsize(file_name)
  if size1 == size2:
    break
  else:
    time.sleep(300)
    size1 = size2

Я видел несколько случаев, когда при использовании первого метода сообщалось, что размеры одинаковы, а файл на самом деле продолжает расти. Есть ли какая-то основная причина, почемуos.stat() будет неправильно сообщать, покаos.path.getsize() не будет? Я не вижу никаких ошибок или исключений.

Ответы на вопрос(1)

Ваш ответ на вопрос