【问题标题】:os.path.getsize vs du -sh on MacOSMacOS 上的 os.path.getsize 与 du -sh
【发布时间】:2019-06-21 11:36:26
【问题描述】:

我想在 python 中测量单个文件的大小,以 MB 为单位。

使用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 MB 和第一种103 MB。

据我了解,基于此答案,差异不可能这么大: python Mac OS : os.path.getsize returns different value than du -ks?

【问题讨论】:

标签: python-3.x macos du


【解决方案1】:

文件可能具有扩展属性。这是与文件关联的附加数据,不属于其正常数据。

正常数据的大小是由stat()系统调用填充的struct stat结构的st_size字段报告的。但是,文件的总大小,包括普通数据和扩展属性,都包含在st_blocks 字段中。

您可以阅读the source code for macOS's du implementation。对于小于 2TB 的文件,它使用文件的块大小。

我假设 Python 使用的是st_size

您可以通过将ls -l@s 应用于文件来查看扩展属性的大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 2013-09-28
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多