Python выполняет команду Class-dump

1

Я пытаюсь выполнить следующий код в Python

import os,subprocess
from glob import glob

path = "/Users/armed/private_SDKs"
os.chdir(path)

for file in glob("*.framework"):
     command = ['class-dump' , '-H' , file , '-o' , '~', '/Users/armed/Desktop/Headers/']
     subprocess.call(command)

При выполнении этого скрипта я получаю следующую ошибку:

Traceback (most recent call last):
  File "<pyshell#52>", line 3, in <module>
    subprocess.call(command)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1228, in _execute_child
    raise child_exception
OSError: [Errno 13] Permission denied

Любая помощь высоко ценится !

  • 0
    Похоже, у вас есть "Отказано в доступе" - попробуйте chmod подпроцесса?
  • 0
    Разрешены ли разрешения в python? Потому что команда отлично работает при вызове из терминала Mac.
Теги:
subprocess

1 ответ

1
Лучший ответ

Проверьте разрешения команды class-dump. chmod +x class-dump если он не является исполняемым. Вот документы на chmod.

Вам также может потребоваться указать абсолютный путь к дампу класса, если он не на вашем пути.

Кроме того, попробуйте:

print " ".join(command)

и посмотреть, можете ли вы запустить его, вставив результаты в оболочку.

  • 0
    Привет спасибо за отзыв! Я определенно не использовал полный путь, который решил некоторые части моей ошибки. Но все еще кажется, что разрешение отклонено, даже после того, как я добавил в эту строку - subprocess.call ('chmod -x / Developer / usr / bin / class-dump'). Любой другой способ, которым я могу использовать CHMOD?
  • 0
    Вы не хотите делать chmod из скрипта Python. Это однократная команда, которая сообщает ОС, что это исполняемый файл, а не файл данных. После запуска файл должен быть исполняемым. Однако -x и + x имеют противоположный эффект. Если вы запустили команду -x, вам нужно изменить ее на + x, прежде чем вы сможете ее запустить.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню