Присвоение переменных командному сценарию в Automator

Так что я новичок в использовании Automator на OSX

у меня действительно простая функция Python

def test(input1,input2,output):
    print str(input1)
    print str(input2)
    print str(output)
    return 'function works'

то, что я хочу сделать, - это создать простое приложение, которое запрашивает расположение файлов двух входов и место назначения файла для вывода (текстовое поле имени для вывода).

так что я возился с: Automator > Выберите Рабочий процесс> Действия> Файлы и папки> Запросить элементы Finder (создайте два из них) > Утилиты> Выполнить сценарий оболочки

Итак, у меня есть три вопроса:

1 Как я могу назначить эти элементы поиска соответственно переменным input1,input2 в моем скрипте python?

2 Где я могу разместить свой скрипт рядом с этим кодом?

import sys

for f in sys.stdin:
    print f,

3 В чем разница между стандартными аргументами?

2 ответа

Решение

Полный рабочий процесс должен выглядеть примерно так:

в Run Shell Script шаг, который вы должны установить Pass Input: в as arguments, так что вы можете использовать sys.args массив. Ваш скрипт Python может быть изменен следующим образом:

import sys

input1 = sys.argv[1]
input2 = sys.argv[2]
output = sys.argv[3]
print input1
print input2
print output

View Results шаг только для отладки.

Если вы установите Pass Input: в to stdinвходные аргументы передаются в ваш скрипт по конвейеру.

Вы можете просто использовать AppleScript:

set inputA to (choose file with prompt "Please choose file one...")
set inputB to (choose file with prompt "Please choose file two…")
set outputA to (choose folder with prompt "Please choose a destination…")

return {((inputA as text) & return & inputB as text) & return & outputA}
Другие вопросы по тегам