Что означают все символические операторы Scala?

Это как работает Win32 API. Под капотом функция open Python вызывает функцию CreateFile , и если это не удается, она преобразует код ошибки Windows в Python IOError.

r+ открытый режим соответствует dwAccessMode в GENERIC_READ|GENERIC_WRITE и dwCreationDisposition в OPEN_EXISTING. Режим открытия w соответствует dwAccessMode в GENERIC_WRITE и dwCreationDisposition в CREATE_ALWAYS.

Если вы внимательно прочитали замечания в документации CreateFile, в нем говорится следующее:

Если заданы CREATE_ALWAYS и FILE_ATTRIBUTE_NORMAL, CreateFile завершается с ошибкой и устанавливает последнюю ошибку на ERROR_ACCESS_DENIED, если файл существует и имеет атрибут FILE_ATTRIBUTE_HIDDEN или FILE_ATTRIBUTE_SYSTEM. Чтобы избежать ошибки, укажите те же атрибуты, что и существующий файл.

blockquote>

Итак, если вы вызывали CreateFile непосредственно из C-кода, решением было бы добавить FILE_ATTRIBUTE_HIDDEN к dwFlagsAndAttributes (вместо FILE_ATTRIBUTE_NORMAL). Однако, поскольку в API-интерфейсе Python нет возможности сказать, что он пройдет в этом флаге, вам просто придется обойти его, либо используя другой открытый режим, либо сделав файл не скрытым.

389
задан Chris Martin 12 April 2016 в 07:00
поделиться