Как избавиться от ошибки "Отказано в доступе"?
Написал код, который должен конвертировать .ui файл в .py
import os
import re
def generate_py_from_ui(path: str):
files = os.listdir(path)
ui_list = []
pattern = re.compile(r'.*\.ui')
for it in files:
if pattern.match(it):
ui_list.append(it)
print(ui_list)
for it in ui_list:
file_path = os.path.join(path, it)
file_name_without_extension = file_path.split(os.sep)[-1].removesuffix('.ui')
cmd = f'pyside6-uic {file_path} > {path}{os.sep}{file_name_without_extension}.py'
print('before os')
os.system(cmd)
print('after os')
if __name__ == '__main__':
generate_py_from_ui(os.path.dirname((os.path.abspath(__file__))))
Судя по всему, код работает, но выдает ошибку Отказано в доступе. Какие есть варианты решения этой проблемы?
Я пробовал все основные варианты: запускал программу в разных директориях, добавлял параметр "Запуск от имени Администратора" к ярлыку python.exe. Ничто из этого ситуацию не поменяло.
Помимо этого, я добавил вот такой фрагмент в начале. import os import sys import re import win32com.shell.shell as shell ASADMIN = 'asadmin'
if sys.argv[-1] != ASADMIN:
script = os.path.abspath(sys.argv[0])
params = ' '.join([script] + sys.argv[1:] + [ASADMIN])
shell.ShellExecuteEx(lpVerb='runas', lpFile=sys.executable, lpParameters=params)
Теперь при каждом запуске появляется запрос разрешения на изменение файлов, но ошибка от этого не исчезла.
Ответы (2 шт):
Откройте cmd от имени администратора, так вы сможете надать доступ к папкам которые находятся ниже папки Users и запускать программу через cmd
попробуй пути взять в двойных кавычках
cmd = f'pyside6-uic "{file_path}" > "{path}{os.sep}{file_name_without_extension}.py"'
от os.system лучше избавиться в пользу вызова uic
from PySide6.scripts.pyside_tool import qt_tool_wrapper
qt_tool_wrapper("uic", ['-g', 'python', '-o', '{outfile}', '{infile}'] , True)