Отсутствует файл с os.walk () - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь создать инструмент для составления списка файлов для коллеги. Код довольно прост:

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 в файле Excel) и учитывая количество файлов, трудно выяснить, какой файл отсутствует.

Кажется, проблема не в написании в Excel, так как я записываю общее количество файлов с помощью len (file_list) и уже могу увидеть, что файл отсутствует в списке. Я предполагаю, что это происходит от хождения по каталогу ??

Кто-нибудь знает, откуда может возникнуть проблема?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Похоже, проблема возникла из условия расширения, один из файлов имел расширение в заглавных буквах. поэтому я просто заменил

if n.endswith(extension):

на

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

И это работает!

Спасибо за вашу помощь.

0 голосов
/ 04 мая 2020

Возможно, ошибка os.walk не отображается по умолчанию. Это можно изменить, установив параметр onerror. Напишите обработчик ошибок:

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

Затем измените свой вызов на:

for root, dirs, files in os.walk(source, onerror=walk_error):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...