MacOSX открыть файл с приложением: куда он девается? - PullRequest
3 голосов
/ 08 сентября 2010

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

Я писал приложения на своем Mac и физически превращал их в пакеты .app (то есть, создание каталогов и plist файлов вручную).Но когда я открываю файл в приложении, щелкая правой кнопкой мыши по файлу в Finder и указывая мое приложение, как мне тогда ссылаться на этот файл?

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

Мое первое предположение было в качестве аргумента, как и ответы на мой предыдущий пост, но это не так.

Py:

>>> print(sys.argv[1:])
'-psn_0_#######'

Где ссылка на файл?

Заранее спасибо,

Ответы [ 5 ]

4 голосов
/ 08 сентября 2010

Файл передается событием Apple, см. этот документ Apple . Вы должны получить это из своего скрипта Python. Если это скрипт PyObjC, должен быть стандартный способ перевода того, что объясняется в этом документе Apple в Objective-C, на Python.

Если ваш скрипт не является приложением с графическим интерфейсом, но если вы просто хотите передать файл скрипту Python, щелкнув по нему, самый простой способ - использовать Automator. Есть действие «Run Shell Script», для которого вы можете указать интерпретатор и код. Вы можете выбрать, будете ли вы получать имена файлов через stdin или аргументы. Automator упаковывает скрипт в приложение для вас.

3 голосов
/ 17 декабря 2011

Это не ответ, но он не помещается в комментариях.Чтобы ответить на @Sacrilicious и дать всем остальное понимание этого:

@ Sacrilicious Вы говорите о чем-то другом. Загрузите этот пример приложения , это скрипт на языке Python, завернутый в «Приложение».Загляните внутрь и найдите 4-строчный скрипт Python: myscript.app/Contents/MacOS/myscript - который будет печатать аргументы, используя

file = open("/tmp/test.txt", "w")
file.writelines(sys.argv[1:])

Вставьте его в папку «Приложения».Затем щелкните правой кнопкой мыши по некоторому файлу и выберите «Открыть с помощью» и выберите myscript.app.

. Теперь посмотрите на /tmp/text.txt, и вы увидите, что там есть что-то вроде -psn_0_#######, а не имяфайл, который вы выбрали "открыть с помощью".Это происходит потому, что файл передается с использованием Apple Events , а не имени файла в качестве аргумента.

Таким образом, этот вопрос задает вопрос, как получить доступ к имени файла переданной вещив сценарии python, завернутом в оболочку приложения OS X .app , и если кто-то может сообщить мне, что он получит награду:)

0 голосов
/ 11 июля 2016

Я описал, как связать определенные типы файлов с Py2app-связанными приложениями Python на https://moosystems.com/articles/8-double-click-on-files-in-finder-to-open-them-in-your-python-and-tk-application.html

0 голосов
/ 23 декабря 2011

Я никогда не слышал, чтобы это делалось без обертки с какао / углеродом.

0 голосов
/ 17 декабря 2011

Имеется ли в виду файл, в котором привязка типов / расширений файлов для каждого пользователя настроена так, чтобы указывать на определенные приложения?

~/Library/Preferences/com.apple.LaunchServices.plist

Фреймворк - launchservices , который получил хорошую проверку из-за «мутности» в начале 10.6, и (как и все файлы списка свойств) может быть изменен черезмосты к ObjectiveC сделаны для Python и Ruby. Вот ссылка с примерами кода Python о том, как связать файл определенного типа с приложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...