s41blizzard
@s41blizzard

Как найти фото в папке, а если его нет, то записать в логи, что его нет?

Дано:
папка с фото, где имена файлов могут быть с пробелами
параметром к скрипту передается строка
Задача:
написать метод, который будет возвращать файл, имя которого.strip() == строке из параметра
Вот что я наваял:
def finding_employee_photo():
    fio = sys.argv[1]
    photo_list = os.listdir(r'C:\Users\s41bl\PycharmProjects\project_birthday\empl_photo')
    photo_path = r'C:\Users\s41bl\PycharmProjects\project_birthday\empl_photo\\'
    file_names = [os.path.splitext(x)[0] for x in photo_list]
    photo_bytes = ''
    now = datetime.datetime.now()

    for el in file_names:
        if el.strip() == fio:
            f_ind = file_names.index(el)
            photo_bytes = open(photo_path + file_names[f_ind] + '.jpg', 'rb').read()
        else:
            with open('logs.txt', 'a') as f:
                f.write(now.strftime("%d-%m-%Y %H:%M") + ' Фото сотрудника ' + fio + ' не найдено ' + '\n')
                print('не найдено фото')
                break

    return photo_bytes

Я никак не могу сообразить, как нормально сравнить строку с именами файлов в папке, так что бы, если он там есть, то его вернуть, а если нет, то ОДИН РАЗ сделать запись в логи. У меня получается на каждой итерации цикла, где ложь, в файл логов делается запись. Я пробовал break, но как бы не додумался как его туда прикрутить нормально.
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
@Keofaste
found = False
...
for el in file_names:
    if l.strip() == fio:
        ...
        found = True
if not found:
    # запись в лог
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы