Переменные в текущей области видимости модулей видны повсюду в модуле - это правило также справедливо для модуля __main__
.
Из учебника Гвидо :
В любой момент во время выполнения есть по крайней мере три вложенных области действия, пространства имен которых доступны напрямую:
- самая внутренняя область, в которой выполняется поиск в первую очередь, содержит локальные имена
- , области действия любых включающих функций, поиск которых начинается с ближайшей охватывающей области, содержит нелокальные, но также и неглобальные имена
- следующая за последней область содержит глобальные имена текущего модуля
- самая дальняя область (последний поиск) - это пространство имен, содержащее встроенные имена
Формулировка фактически является системным сообщением, а не сообщением JRE. (Совместимость с POSIX вернет "Недостаточно места")
Таким образом, лучше всего получить список сообщений об ошибках системы для целевой ОС.
В качестве альтернативы, при возникновении исключения вы можете проверьте, нет ли на диске свободного места.
Из apache commons IO:
FileSystemUtils.freeSpaceKb(String path);
вернет свободное место на диске / томе (или, возможно, даже вызовет исключение IOException!)
Относительно того, почему не существует подкласса IOException
, я подозреваю, что Вызов файла операционной системы не дает достаточно информации в достаточном количестве случаев, чтобы Java могла определить, в чем заключается ошибка, без анализа сообщения об ошибке (в лучшем случае очень хрупкая операция). Вероятно, это справедливо для ряда вызовов io.