Python — Откройте несколько файлов и выведите имя файла

#python #file

Вопрос:

Я довольно новичок в Python и работаю над проектом для работы. Моя цель-извлечь файлы из каталога, и если внутри файла существует слово failed, оно выведет это имя файла в мой выходной текстовый файл, а затем перейдет к следующему файлу.

 for file in os.listdir('directory i am pulling files from'):

    #if file extension is .log, open file and save filename
    if fnmatch.fnmatch(file, '*.log'):
        logFile = open('*.log', 'r')
        fileName = os.path.basename(logFile)
    
        #if string 'failed' is somewhere in the file, open output file /
        #and insert the filename into the output file /
        #once done, close both the log file and output file
        if 'failed' in logFile.read():
            outputFile = open('C:AllowedlogError_output.txt', 'a')
            outputFile.write('write the filename')
            outputFile.close()
            logFile.close()
    
        #if file does not have 'failed' in contents /
        #close log file
        else:
            logFile.close()
 

»’

Комментарии:

1. Какой у тебя вопрос? Ваш сценарий работает не так, как вы ожидали? Если да, то чем результаты отличаются от того, что вы хотите?

2. Код ничего не выводит. Однако нет никаких ошибок или очевидных проблем, которые я упускаю с первого взгляда. Мне интересно, работает ли теоретически мой код, но если мне чего-то не хватает, я помещаю имя файла в выходной файл

3. Все еще не ясно, в чем ваша проблема. Делает ли это то, что вы хотите? Если бы это было так, вы бы не спрашивали здесь. Чего вы ожидали от своего кода и что вы получаете вместо этого? Мы не можем догадаться, в чем ваша проблема.

4. Цель программы состоит в том, чтобы вывести имя файла считываемого файла, если файл содержит слово failed в любом месте. Однако, когда я запускаю его, в файл ничего не выводится так, как должно быть. Я пробовал, выводя данные с помощью инструкции печати, однако тоже ничего не печатается. Итак, мой вопрос в том, почему в файл ничего не отправляется.

Ответ №1:

Предполагая, что в вашем каталоге нет файла с именем «*.log», вы должны получить FileNotFoundError. Если, по изменению, есть такой файл, то вы никогда не увидите реальной проблемы: строка logFile = open('*.log', 'r') должна быть logFile = open(file, 'r') .

Комментарии:

1. Я понимаю, что ты имеешь в виду. Я переключил свой файл журнала, однако это не изменило проблему. Мне интересно, есть ли что-то не так с моим вторым утверждением if.

2. Вы также должны удалить строку с прерывистым присвоением имени файла. Это вызывает ошибку ввода на моей машине. Интересно, почему это не так, когда вы выполняете код…

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