Тема: Програма не реагує на винятки.
Є програма для пошуку файлів, які містять певне слово, розроблені 2 версії даної програми, але вони виходять з ладу на одному місці:
file_path = open(os.path.join(path, file_name))Перша версія скрипту:
import os
from os.path import splitext
import fnmatch
 
print ('Производиться поиск ключевого \nслова во всех файлах заданой директории \nкроме расширений *.exe, *.zip, *.xls(x), \n*.dot(x), *.apk, *.dll, *.doc(x), *.ppt(x).')
print ('\n----------------------------------\n')
 
def main():
    path = input('Директория: ')
    while not os.path.isdir(path): #проверка пути
        print('Такого каталога нет')
        path = input('Путь к каталогу: ')
        return
 
    pattern = input('Искаемое слово: ')
 
 
    EXCL_EXTS = ('.exe', '.zip', '.xls(x)', '.dot(x)', '.apk', '.dll', '.doc(x)', '.ppt(x')
 
    for dirpath, dirs, files in os.walk(path):
        for file_name in files:
            fn, fext = splitext(file_name)
            if fext not in EXCL_EXTS:
                continue
            file_path = open(os.path.join(path, file_name), 'r')
            print(os.path.join(path, file_name))
 
if __name__ == '__main__':
    main()
 
def find_word(file_path, pattern):
    new_lines = []
    try:
        with open(file_path, 'rb') as f:
            for line in f:
                if pattern in line:
                    continue
                else:
                    True
    except FileNotFoundError:
        print('Нету прав доступа:', file_path)
        return
    except PermissionError:
        print('Нету прав доступа:', file_path)
        return
    else:
        pass
        returnДруга версія:
import os
from os.path import splitext
import fnmatch
 
print ('Производиться поиск ключевого \nслова во всех файлах заданой директории \nкроме расширений *.exe, *.zip, *.xls(x), \n*.dot(x), *.apk, *.dll, *.doc(x), *.ppt(x).')
print ('\n----------------------------------\n')
 
def main():
    path = input('Директория: ')
    while not os.path.isdir(path): #проверка пути
        print('Такого каталога нет')
        path = input('Путь к каталогу: ')
        return
   
    pattern = input('Искаемое слово: ')
 
 
    EXCL_EXTS = ('.exe', '.zip', '.xls(x)', '.dot(x)', '.apk', '.dll', '.doc(x)', '.ppt(x')
       
    for dirpath, dirs, files in os.walk(path):
        for file_name in files:
            fn, fext = splitext(file_name)
            if fext not in EXCL_EXTS:
                continue
            file_path = open(os.path.join(path, file_name))
            if os.path.isfile(file_path):
                continue
            print(os.path.join(path, file_name))
 
if __name__ == '__main__':
    main()
 
def find_word(file_path, pattern):
    new_lines = []
    try:
        with open(file_path, 'rb') as f:
            for line in f:
                if pattern in line:
                    continue
    except PermissionError:
        print('Нету прав доступа:', file_path)
        return