gpt4 book ai didi

python - 如何在 Mac OSX 上确定文件的扩展属性和资源分支及其大小?

转载 作者:太空狗 更新时间:2023-10-30 03:06:40 24 4
gpt4 key购买 nike

我写了一个small utility for creating xml对于任何文件夹结构和comparison of folders通过生成的支持 win 和 Mac 作为平台的 xml。但是在 Mac 上,递归计算文件夹大小不会加起来等于总大小。经调查,这是由于extended attributes。和 resource forks存在于某些文件中。

谁能知道我如何最好在 python 中确定这些扩展属性和资源分支及其大小。目前,我正在使用 os.path.getsize 来确定文件的大小,并添加文件大小来最终确定文件夹的大小。

最佳答案

您需要名为 st_blocksstat 结果的隐藏成员。

>>> s = os.stat('some_file')
>>> s
posix.stat_result(st_mode=33261, st_ino=12583347, st_dev=234881026,
st_nlink=1, st_uid=1000, st_gid=20, st_size=9889973,
st_atime=1301371810, st_mtime=847731600, st_ctime=1301371422)
>>> s.st_size / 1e6 # size of data fork only, in MB
9.889973
>>> x.st_blocks * 512e-6 # total size on disk, in MB
20.758528

有问题的文件在资源分支中有大约 10 MB,它显示在 stat 的结果中,但在“隐藏”属性中。 (对于确切知道这是哪个文件的任何人来说,奖励积分。)请注意,man 2 stat 中记录了 st_blocks 属性始终测量 512 字节的增量。

注意:st_size 衡量数据的字节数,但st_blocks 衡量磁盘上的大小,包括部分使用 block 的开销。所以,

>>> open('file.txt', 'w').write('Hello, world!')
13
>>> s = os.stat('file.txt')
>>> s.st_size
13
>>> s.st_blocks * 512
4096

现在,如果您在 Finder 中执行“获取信息”,您将看到该文件具有:

Size: 4 KB on disk (13 bytes)

关于python - 如何在 Mac OSX 上确定文件的扩展属性和资源分支及其大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7573440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com