Ошибка доступа запрещена в Python при попытке закрыть окно - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь закрыть открытое окно TextEdit, используя Python. Я могу просто открыть окно, используя:

import subprocess
p = subprocess.call(['open', 'allen_grammar.txt'])

Но когда я пытаюсь закрыть окно, используя

p = subprocess.Popen( 'allen_grammar.txt')
p.terminate()

Я получил ошибку об отказе в разрешении:

p = subprocess.Popen( 'allen_grammar.txt')
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 707, in __init__
    restore_signals, start_new_session)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 1326, in _execute_child
    raise child_exception_type(errno_num, err_msg)
PermissionError: [Errno 13] Permission denied

У меня есть полные права доступа к файлу, и я являюсь администратором компьютера.

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Не совсем ответ, но успешный обходной путь. Мне пришлось использовать Applescript, и вызов Applescript из Python выглядит следующим образом:

os.system(f'''/usr/bin/osascript -e 'tell app "TextEdit" to close (every window whose name is "allen_grammar.txt")' ''')
0 голосов
/ 26 июня 2019

Звонок в Popen должен быть таким:

    p = subprocess.Popen(['notepad.exe','allen_grammar.txt'])

Я использовал блокнот, так как у меня нет TextEdit, вы можете заменить 'notepad.exe' при вызове в любой текстовый редактор, который вы хотите,p.terminate() после этого должно работать нормально

...