Я всегда путаюсь, будет ли функция повышать IOError или OSError (или оба?). Каково основное правило, лежащее в основе этих типов исключений, какова разница между ними и когда возникает?
Я изначально думал, что OSError для таких вещей, как отказ в разрешении, но открытие файла без разрешений приведет к увеличению IOError.