Присвояване на променливи към команден скрипт в Automator

Така че аз съм нов в използването на Automator на OSX

имам наистина проста функция на python

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

това, което искам да направя, е да генерирам просто приложение, което пита за файловите местоположения на двата входа и местоназначението на файла за изхода (име текстово поле за изход).

така че се забърквах с: Automator > Choose Workflow > Actions > Files & Folders > Ask for Finder Items (Create two of these) > Utilities > Run Shell Script

Така че имам три въпроса:

1. Как мога да присвоя тези елементи за намиране съответно на променливи input1, input2 в моя скрипт на python?

2 . Къде да поставя моя скрипт в близост до този код?

import sys

for f in sys.stdin:
    print f,

3 . Каква е разликата между stdin, arguments?


person O.rka    schedule 18.03.2013    source източник


Отговори (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, входните аргументи се предават на вашия скрипт чрез тръбопровод.

person Riccardo Marotti    schedule 18.03.2013
comment
изглежда не мога да го накарам да създаде изходния файл. няма нищо във Finder & Folders, което да създава нов файл, който мога да видя. . . освен това не мога да го накарам да отпечата данните, които се връщат. плъзнах View Results след Run Shell Script и не работи, когато стартирах приложението (не в automator) - person O.rka; 18.03.2013

Можете просто да използвате 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}
person adayzdone    schedule 18.03.2013