Python — Как пройти через ошибку разрешения в Windows

#python #windows #windows-7 #file-permissions

Вопрос:

Поэтому я написал простой скрипт для управления запуском, разделив его на разные настройки

Затем я написал простой сценарий установки, который должен просто создавать каталоги

Они оба отлично работали на macOS и Linux, когда я их тестировал

но когда я попытался запустить их в Windows, я получил ошибку разрешения

 Traceback (most recent call last):
  File ".install.py", line 13, in <module>
    with open(yml_file_dir file_sep 'conf.yml', 'w') as f:
PermissionError: [Errno 13] Permission denied: 'C:\Users\kerem\AppData\Local\Kerem Göksu\Startups\0.1.0-alpha\conf.yml'
 

сценарий установки:

 import os, platform
from appdirs import AppDirs

dirs = AppDirs("Startups", "Kerem Göksu", version="0.1.0-alpha")
file_sep = "\" if platform.system() == "Windows" else "/"
yml_file_dir = dirs.user_data_dir

try: os.makedirs(yml_file_dir)
except FileExistsError: pass

with open(yml_file_dir file_sep 'conf.yml', 'w') as f:
    f.write("""startup_prompt: 'What startup will you use today? '
startups:
  hello:
  - echo Hello, World!""")
 

Итак, как я могу получить разрешение в Windows? В Windows нет sudo.
Или есть способ, которым я мог бы сделать это без необходимости получать разрешение?

Я использую Windows 7 версии 6.1 Номер сборки 7601, SP1

Комментарии:

1. В Windows нет sudo . Верно, но есть почти эквивалентный. Это называется Запуск от имени администратора . У appdata папки могут быть ограниченные права доступа.

2. Используйте os.path.join вместо объединения строк. Для быстрого ShellExecute повышения высоты используйте pywin32 или ctypes