Тема: Програма не реагує на винятки.
Є програма для пошуку файлів, які містять певне слово, розроблені 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