2017-06-03 159 views
2

有沒有辦法編輯os.stat返回的對象?在這一點上,我希望能夠爲對象添加一個文件名的值,以便更容易地識別原始文件。修改os.stat對象

在這一點上,我可以找到的唯一方法是類似於posix.stat_result對象的子類並添加值(儘管我還沒有試圖找出它是如何可行的)。這會工作嗎?有沒有更好的辦法?

回答

0

你可以這種方式轉換爲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()) 
+3

爲什麼不'當d = {K:在目錄(S)GETATTR(S,K)對於k如果k.startswith( 'ST_')} '?這樣,你不必列出字段。 – phihag

+0

@phihag好主意! – jez