Python使用os.walk遍历目录时所有文件stat状态值一致如何修复?
问题修复方案
根因分析
- 代码中
os.stat()的入参固定为初始根目录rootDir,且仅在外层遍历循环中执行一次,所有输出的状态实际都是根目录的固定属性,和遍历到的子目录、单个文件无关 - 没有为每个遍历到的文件拼接所在目录的完整路径,无法正确获取单个文件的状态属性
修复后代码
import os rootDir = '.' for dirName, subdirList, fileList in os.walk(rootDir): print('目录路径: %s' % dirName) for fname in fileList: # 拼接得到文件的完整路径 full_path = os.path.join(dirName, fname) # 针对当前文件单独获取状态 status = os.stat(full_path) print('\t 文件名: %s 状态信息: %s' % (fname, status))
可选优化
如果需要提取指定的状态字段,可以直接调用stat对象的对应属性:
- 文件字节大小:
status.st_size - 文件最后访问时间:
status.st_atime - 文件最后修改时间:
status.st_mtime - Windows下文件创建时间/Unix下属性变更时间:
status.st_ctime
内容的提问来源于stack exchange,提问作者KasTadTe
相关产品推荐
相关产品推荐

