#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)
где-нибудь какую-нибудь проверку.