Обработка исключений Python: исключение не работает

#python #exception #error-handling #exception-handling #try-catch

#python #обработка ошибок #исключение #попробуйте-поймайте

Вопрос:

Мой код загружает файлы из веб-службы онлайн-хранилища файлов и разархивирует их. Чтобы запустить мой скрипт, я даю ему дату в качестве аргумента (как указано здесь ниже). Я хочу добавить сообщение об ошибке, если дата не соответствует каким-либо документам.

Итак, предполагая, что у меня есть данные за один месяц (июль), действительной датой является существующая папка, в которой содержится информация о рассматриваемой дате (пример: 07 июля 2016 года).). Очевидно, что неправильная дата — это несуществующая папка в моей веб-службе онлайн-хранилища файлов (пример : 18 августа 2016 года).

Это то, что я должен делать в своей основной функции :

 download_usrm(date = sys.argv[1]) 
  

И, очевидно, это моя командная строка для запуска моего скрипта :

 python Extractor.py 07Jul2016
  

Это рассматриваемый код (это только часть try / except):

 if key_element.startswith(date):

    try:                
        if not os.path.exists(working_directory  '/'  date_file  '/' parentKey):
            os.makedirs(working_directory  '/'  date_file  '/' parentKey)
        key.get_contents_to_filename(working_directory  '/'  date_file  '/' keyString)

       for f in glob.glob(working_directory  '/'   date_file  '/'  'usrm'   '/'  file_name  '*.zip'):
           zip_ref = zipfile.ZipFile(f, 'a')
           zip_ref.extractall(working_directory   '/'   date_file  '/'  'usrm'   '/'   file_id)
           zip_ref.close()
           os.remove(f)

    except Exception as e:
        print('ERROR MESSAGE : Your search did not match any documents. Try rynning with another date.', e)
  

Таким образом, с действительной датой мой код работает нормально. С неправильной датой у меня ничего нет. Сообщение об ошибке не отображается.

Что может быть не так? Любая помощь приветствуется. Спасибо!

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

1. Какую часть вы ожидаете вызвать здесь исключение?

2. Если дата неверна, ваш glob цикл for просто не найдет никаких файлов и продолжит работу без создания исключения

3. @deceze : вся эта часть. Я хочу получить сообщение об ошибке, если дата, указанная в качестве аргумента, неверна. Может быть, я должен переместить свою «попытку» перед моим условием «if key_element.startswith (date):» ?

4. Нет, то, что вы должны сделать, это запустить некоторый код, который фактически вызовет исключение . Ни один из выполняемых вами кодов не вызывает никаких исключений, поэтому ни одно из них не может быть перехвачено. По крайней мере, включите assert (date is valid) где-нибудь какую-нибудь проверку.