os.stat和多处理。并行分析文件列表

时间:2017-07-11 15:40:12

标签: python python-2.7

我正在尝试在os.stat中运行pool以获取文件列表,但结果只接收嵌套的文件列表统计信息:

list_of_files = ['file1.txt','file2.txt','file3.txt']
p = Pool(4) 
list_of_stats = p.map(os.stat, list_of_files)

list_of_fies包含下一个值: nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0L, st_nlink=0, st_uid=0, st_gid=0, st_size=8905L, st_atime=1499725858L, st_mtime=1416573654L, st_ctime=1445009618L)...

我的问题是:在list / dict中获取与此文件相关的文件名+统计信息的最简单方法是什么?

例如dict: {'file1.txt': [st_mode=33206, st_ino=0L, st_dev=0L, st_nlink=0, st_uid=0, st_gid=0, st_size=8905L, st_atime=1499725858L,...]}

1 个答案:

答案 0 :(得分:0)

我使用类似下面的代码找到了解决方案:

list_of_files = [name1, name2, name3, name4]

def file_stat(file_path):
    return (file_path, os.stat(file_path))


if __name__ == "__main__":

    p = Pool(2)
    list_of_stats = p.map(file_stat, list_of_files)

    print(type(list_of_stats)) 

    print(list_of_stats)

输出:

<type 'list'>

[(u'\\path\to\file\name1.xml', nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0L, st_nlink=0, st_uid=0, st_gid=0, st_size=8905L, st_atime=1501540255L, st_mtime=1416573654L, st_ctime=1445009618L)), (u'\\path\to\file\name2.xml', nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0L, st_nlink=0, st_uid=0, st_gid=0, st_size=47000L, st_atime=1501540327L, st_mtime=1475583701L, st_ctime=1445009618L)), ... ]