Тестовые полномочия каталога в Python?

      namespace readingvaraibles
     {
         public class Class1
        {
           public Class2 Class2 {get;set}
           public Class3 Class3 {get;set;
        }
     }

     var class1 = new Class1();
     var class2 = new class1.Class2();
     var variable1 = class2.variable_1;
     var variable2 = class2.variable_2;

     var class3 = new class1.Class3();
     var variable3 = class3.variable3;

и т.д ...

8
задан jww 7 July 2019 в 01:08
поделиться

3 ответа

Это может быть сложно для проверки на полномочия в Windows (остерегайтесь проблем в Vista с контролем учётных записей, например! - посмотрите этот связанный вопрос).

Вы говорите о простом доступе для чтения, т.е. читаете содержание каталога? Самый верный способ протестировать полномочия состоял бы в том, чтобы попытаться получить доступ к каталогу (например, сделать os.listdir) и поймайте исключение.

Кроме того, для путей, которые будут интерпретироваться правильно, необходимо использовать необработанные строки или выйти из обратных косых черт (' \\'), - или использовать наклонные черты вправо вместо этого.

(РЕДАКТИРОВАНИЕ: можно избежать наклонных черт в целом при помощи os.path.join - рекомендуемый способ создать пути)

7
ответ дан 5 December 2019 в 14:06
поделиться

В то время как os.access старается изо всех сил говорить, доступен ли путь или нет, он не утверждает, что был прекрасен. Из документов Python:

Примечание: Операции ввода-вывода могут перестать работать, даже когда доступ () указывает, что они успешно выполнились бы, особенно для операций в сетевых файловых системах, которые могут иметь семантику полномочий вне обычной модели бита полномочий POSIX.

Рекомендуемый способ узнать, есть ли у пользователя доступ, чтобы сделать независимо от того, что состоит в том, чтобы попытаться сделать это и поймать любые исключения, которые происходят.

5
ответ дан 5 December 2019 в 14:06
поделиться

На самом деле 'C: \ haveaccess' отличается от r'C: \ haveaccess '. С точки зрения Python' C: \ haveaccess 'не является допустимым путем, поэтому используйте вместо него' C: \\ haveaccess '. Я думаю, что os.access работает нормально.

0
ответ дан 5 December 2019 в 14:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: