2
有沒有辦法編輯os.stat返回的對象?在這一點上,我希望能夠爲對象添加一個文件名的值,以便更容易地識別原始文件。修改os.stat對象
在這一點上,我可以找到的唯一方法是類似於posix.stat_result對象的子類並添加值(儘管我還沒有試圖找出它是如何可行的)。這會工作嗎?有沒有更好的辦法?
有沒有辦法編輯os.stat返回的對象?在這一點上,我希望能夠爲對象添加一個文件名的值,以便更容易地識別原始文件。修改os.stat對象
在這一點上,我可以找到的唯一方法是類似於posix.stat_result對象的子類並添加值(儘管我還沒有試圖找出它是如何可行的)。這會工作嗎?有沒有更好的辦法?
你可以這種方式轉換爲dict
:
import os
s = os.stat('.')
d = dict(zip('mode ino dev nlink uid gid size atime mtime ctime'.split(), s))
...再增加其他一些項目的dict
。
請注意,我僅包含核心10個字段。如果你想覆蓋all the possible fields,那麼你可以這樣做:
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())
爲什麼不'當d = {K:在目錄(S)GETATTR(S,K)對於k如果k.startswith( 'ST_')} '?這樣,你不必列出字段。 – phihag
@phihag好主意! – jez