修改 os.stat 对象

3
有没有一种方法可以编辑os.stat返回的对象?此时,我希望能够向对象添加一个文件名的值,以便更轻松地识别源文件。
目前,我唯一想到的方法是类似于子类化posix.stat_result对象并添加该值(尽管我尚未尝试过以确定其可行性)。那会起作用吗?有更好的方法吗?
1个回答

1
您可以这样将其转换为 dict
import os
s = os.stat('.')
d = dict(zip('mode ino dev nlink uid gid size atime mtime ctime'.split(), s))

...然后向dict添加更多条目。

请注意,我仅包括了核心的10个字段。如果您想涵盖所有可能的字段,可以尝试以下操作:

import os
fields = 'mode ino dev nlink uid gid size atime mtime ctime blocks blksize rdev flags gen birthtime ftype attrs obtype'

s = os.stat('.')
d = dict((field,getattr(s,'st_'+field, None)) for field in fields.split())

5
为什么不用d = {k: getattr(s, k) for k in dir(s) if k.startswith('st_')}呢?这样就不用列出字段了。 - phihag
@phihag 好主意! - jez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接