|
Python: нужно проверить права доступа к директории (OS Windows)
|
|||
---|---|---|---|
#18+
вопрос: и как же это лучше сделать? (проверяем для пользователя, запустившего скрипт) в идеале мне бы подошел функционал os.access(), но в Windows 7 он не работает (нет поддержки effective user id) пока попробовала следующее и привожу результаты (a) пробуем и os.access() и с опцией effective_ids=True и получаем ошибку Код: python 1. 2. 3. 4. 5. 6.
(b) пробуем и os.access() c опцией effective_ids=False Код: python 1. 2. 3. 4. 5. 6.
(c) пробуем os.path Код: python 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2016, 18:26 |
|
Python: нужно проверить права доступа к директории (OS Windows)
|
|||
---|---|---|---|
#18+
mini.weblab, 1) Существование директории, наверное лучше всего проверять os.path.isdir(directory_name) 2) Проверка Read Permission для директории ??? 3) Проверка Write Permission для директории ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2016, 20:58 |
|
Python: нужно проверить права доступа к директории (OS Windows)
|
|||
---|---|---|---|
#18+
mini.weblab, Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
критика и альтернативные решения приветствуются ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2016, 22:35 |
|
Python: нужно проверить права доступа к директории (OS Windows)
|
|||
---|---|---|---|
#18+
mini.weblab, А где варианты с os.access(os.R_OK) и os.W_OK? Они проверялись и не работают (и почему тогда их в примере нет)? Или не проверялись даже? Ну и не совсем понятно, где вы с effective/real UID путаетесь. Потому что "для пользователя, запустившего скрипт" - это real uid. А effective uid - это "пользователь, с правами которого сейчас выполняется скрипт". Они вообще обычно совпадают, если не делать лишних (os-specific) телодвижений. Для windows это будет где-то рядом с ImpersonateUser и т.п. А если вы что-то подобное все же делаете, ваш второй код не верен, потому что он будет проверять права для "имперсонифицированного" пользователя (os.access по идее тоже) а не того, кто изначально запустил скрипт. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2016, 22:56 |
|
Python: нужно проверить права доступа к директории (OS Windows)
|
|||
---|---|---|---|
#18+
1. maxkarmini.weblab, А где варианты с os.access(os.R_OK) и os.W_OK? Они проверялись и не работают (и почему тогда их в примере нет)? Или не проверялись даже? они проверялись, но не дали желаемого результата. проблема описана в первом посте (а): NotImplementedError: access: effective_ids unavailable on this platform. Если запускать os.access() с опцией effective_ids=False, то мы получаем True для любой существующей папки вне зависимости от прав доступа, и False для несуществующей. Т.е. папка существует и теоретически в нее можно заглянуть и что-то записать, примерно так. :) 2. я тоже думала, что os.access() по идее, а на практике оказалось, что нет. :) в Windows функция os.access() работает некорректно, поэтому я пробую альтернативные решения. Интересует effective UID: т.е. все просто, скрипт запускается и работает от имени одного пользователя, и мы хотим проверить есть ли у данного пользователя права чтения-записи в определенную папку. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2016, 01:39 |
|
|
start [/forum/topic.php?fid=23&fpage=39&tid=1460869]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 320ms |
total: | 447ms |
0 / 0 |