os.path.getsize vs du -sh на MacOS - PullRequest
       26

os.path.getsize vs du -sh на MacOS

0 голосов
/ 21 июня 2019

Я хочу измерить размер отдельного файла в мегабайтах в python.

Использование python:

def get_size_in_mb(filepath):
    size_in_bytes = os.path.getsize(filepath)
    size_in_mb = size_in_bytes // (1024*1024)
    return size_in_mb

Использование bash:

du -sh Ue3Amb-A-P0.mp4

Второй метод дает 112 МБ и сначала 103 МБ.

Насколько я понимаю, на основании этого ответа разница не может быть настолько большой: Python Mac OS: os.path.getsize возвращает значение, отличное от du -ks

1 Ответ

0 голосов
/ 21 июня 2019

Файл может иметь расширенные атрибуты.Это дополнительные данные, связанные с файлом, который не является частью его обычных данных.

Размер нормальных данных - это то, что сообщается полем st_size структуры struct stat, заполненной stat() системный вызов.Однако общий размер файла, включая как обычные данные, так и расширенные атрибуты, включен в поле st_blocks.

Вы можете прочитать исходный код для реализации du macOS .Для файлов размером менее 2 ТБ он использует размер блока файла.

Я предполагаю, что Python использует st_size.

Размеры расширенных атрибутов можно увидеть, применивls -l@s в файл.

...