Python - 以更有效的方式遍历大量文件

时间:2014-02-12 03:44:48

标签: python os.walk

我想要使用python遍历大量文件。我正在使用os.walk(源代码)并且正在工作,但由于我有一大堆文件,因为它一次性获取完整列表所以它占用了太多内存资源。如何优化它以使用更少的资源,并且可以一次遍历一个目录或以其他有效方式遍历,并且仍然能够迭代整个文件集。感谢

for dir, dirnames, filenames in os.walk(START_FOLDER): 
    for name in dirnames: 
        #if PRIVATE_FOLDER not in name: 
            for keyword in FOLDER_WITH_KEYWORDS_DELETION_EXCEPTION_LIST: 
                if keyword in name.lower(): 
                    ignoreList.append(name)

2 个答案:

答案 0 :(得分:3)

如果问题是该目录只有too many files in it,那么希望在Python 3.5中解决这个问题。

在此之前,您可能需要查看scandir

答案 1 :(得分:2)

您应该使用in关键字来测试目录名是否与关键字匹配。

for _, dirnames, _ in os.walk(START_FOLDER): 
    for name in dirnames:
        if any((k in name.lower() for k in FOLDER_WITH_KEYWORDS_DELETION_EXCEPTION_LIST)):
            ignoreList.append(name)

如果您的ignoreList太大,您可能需要考虑创建acceptedList并使用它。