Как передать имена путей в сценарий Python путем «удаления» файлов / папок с помощью значка сценария

Я работаю в Mac OS X и пишу простые сценарии копирования файлов и папок в Python. Есть ли способ перетащить папку поверх значка скрипта Python и передать путь файла или папки в качестве аргумента в скрипте?

В настоящее время у меня есть капля AppleScript (которая поддерживает перетаскивание), которая передает пути удаленных папок и файлов на Python. Тем не менее, я хотел бы иметь только один скрипт Python вместо AppleScript и скрипта Python.

Любая помощь будет принята с благодарностью.

2 Solutions collect form web for “Как передать имена путей в сценарий Python путем «удаления» файлов / папок с помощью значка сценария”

Просто используйте утилиту «Build Applet»:

/Developer/Applications/Utilities/MacPython\ 2.5/Build\ Applet.app 

и удаленные пути к файлам будут доступны через sys.argv.

Обратите внимание, что вам, возможно, придется использовать Python2.5 (или исправленную версию) – см. Это примечание: https://bitbucket.org/ronaldoussoren/py2app/issue/16/argv-emulation-code-needs-rewrite

Быстрый пример – отредактируйте этот файл и поместите его на рабочий стол:

 #!/usr/bin/python2.5 import sys print sys.argv 

Щелкните по нему правой кнопкой мыши и выберите «Открыть апплет» (2.5.4)

Значок приложения появится на рабочем столе.

Откройте консольную утилиту и очистите дисплей.

Отбросьте некоторые файлы на значок приложения – вы увидите печать в окне консоли.

Что вам может действительно понравиться – это Mac OS Services. Это рабочие процессы Automator, которые могут прекрасно интегрироваться в операционную систему в контексте: например, вы можете сделать свой скрипт в контекстном меню Finder при выборе папки.

Вы можете сделать сервис из сценария python следующим образом:

  1. Откройте Automator.app и создайте новую службу;
  2. Вдобавок к блоку последовательности действий вы выбираете, какой тип ввода ожидает ваше приложение (папки – ваш выбор, если я правильно понимаю);
  3. Перетащите блок «Run Shell Script» из левой панели в рабочий процесс;
  4. Теперь вы можете использовать оболочку bash по умолчанию ( /bin/bash ), чтобы вызвать ваш скрипт:

      / full / path / to / your / python /full/path/to/your/script.py $ @
    

  5. Или используйте /usr/bin/python (по умолчанию python) и вставьте свой код непосредственно в текстовый блок;

  6. Не забудьте установить Pass input: as arguments в верхнем правом углу блока.

Немного сложно отладить такие рабочие процессы (поскольку вы не увидите stdout и stderr). Возможным обходным excepthook для отладки является настройка пользовательского excepthook и вывод всех исключений в некоторый простой текстовый файл:

 import sys, traceback def excepthook(type, exc, tb): with open("error.log", "a") as f: traceback.print_exc(file=f) sys.excepthook = excepthook 
  • Python запрашивает более старые пути на Mac после удаления дублированной установки python
  • Пип-установка pygraphviz терпит неудачу: Неудачное строительное колесо для pygraphviz
  • Переключение между python 2.7 и python 3.5 в Mac OS X
  • pycurl install :( уже есть версия libcurl min.
  • Установка PIL для использования с Django в Mac OS X
  • Как настроить локальный каталог библиотеки python / PYTHONPATH?
  • Установка Python 2.5.2 на OS X 10.6
  • Подсказка администратора GUI для Mac OS X Python
  • Где находится папка для установки tensorflow с pip, Mac OSX?
  • Homebrew устанавливает libxml2 с модулями python
  • Можно получить доступ к сайтам AppEngine SDK через локальный ip-адрес, когда localhost работает нормально и MacOSX
  • Python - лучший язык программирования в мире.