缺少带有 os.walk() 的文件

Missing a file with os.walk()

我正在尝试为同事制作一个文件列表工具。代码很简单:

source = C:\Users\Documents\test
extension = '.txt'
file_list = []
lower_levels = False


for root, dirs, files in os.walk(source):
    for n in files:
        if n.endswith(extension):
            file_list.append(n)
    if (not lower_levels):          #does not check lower levels
        break

writing_in_excel(source, file_list) #output is an excel file

在我的测试文件夹中测试它时,它工作得很好,我在输出中列出了我所有的 121 个文件。

然而,当我的同事尝试时,与 Windows 给出的文件数相比,缺少一个文件(我验证了, windows 表示 39735 个扩展名正确的文件,对于 39734 in excel 文件)并且鉴于文件的数量,很难找出丢失的文件。

问题好像不是写在excel,因为我写的文件总数是len(file_list) , 并且已经可以看到列表中缺少该文件。我猜它来自目录中的行走??

有人知道问题出在哪里吗?

谢谢

可能存在 os.walk 默认不显示的错误。可以通过设置 onerror 参数来处理。编写错误处理程序:

def walk_error(error):
    print(error.filename)

然后将您的呼叫更改为:

for root, dirs, files in os.walk(source, onerror=walk_error):

看起来问题出在扩展条件上,其中一个文件的扩展名是大写的。 所以我只是替换了

if n.endswith(extension):

ext = os.path.splitext(n)[-1].lower()       #get the current file extension in lower case
if ext== extension:

而且有效!

感谢您的帮助。