EACCESS должен быть EACCES (производным от стандартных библиотек Unix C.) Это не приведет к тому, что вы не увидите ошибку, поскольку IOERROR будет повышаться, а вы будете повторно поднимать, даже если блок if не выполняется,Это звучит как специфическая проблема Linux.Вероятно, SELinux.
Кстати, контекстный менеджер был бы полезен, чтобы избежать специфического else close ().