首页 > 解决方案 > 目录搜索返回的文件数不正确

问题描述

我正在使用 Python3、Linux Mint 和 Visual Studio Code。

同样使用以下代码查看目录中是否存在任何 evtx 文件:

    print("Number of EVTX files in each individual folder:")
path = '/home/user/CI5235_K1915147_Sam/evtx_logs'
folders = ([name for name in os.listdir(path)])
targets = []
for folder in folders:
    contents = os.listdir(os.path.join(path,folder))
    for i in contents:
        if i.endswith('evtx'):
            targets.append(i)
    print(folder, len(contents))
print ("Total number of evtx files = " + str(len(targets)))

print()

它搜索 evtx_logs 的目录和子目录并列出其中的每个文件。我将如何修改它,使其仅计算 evtx 文件,因为它当前也在计算文件夹中的其他 .xml 文件。

标签: pythonlinuxfilelinux-mint

解决方案


修改您现有的代码以glob按照上面的建议使用。

#!/usr/bin/env python3
import os
import glob
print("Number of EVTX files in each individual folder:")
path = '/home/user/CI5235_K1915147_Sam/evtx_logs'
folders = ([name for name in os.listdir(path)])
targets = []
for folder in folders:
    contents = glob.glob(os.path.join(path,folder)+"/*evtx")
    for i in contents:
        targets.append(i)
    print(folder, len(contents))
print ("Total number of evtx files = " + str(len(targets)))

print()

您自己的代码的问题在于您正在打印内容的长度(始终是目录中的所有文件),而不是来自if i.endswith('evtx'):.


推荐阅读