2013-03-18 3 views
1

Je suis nouveau à l'aide de la Automator sur Mac OS Xdes variables assignant à commander script Automator

j'ai une fonction python très simple

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

ce que je veux faire est de générer une application simple qui demande pour les emplacements de fichier des deux entrées et la destination du fichier pour la sortie (zone de texte de nom pour la sortie).

donc j'ont été déconner avec: Automator> Choisissez workflow> Actions> Fichiers & Dossiers> Demander éléments du Finder (Créer deux de ces)> Utilitaires> Run Shell Script

J'ai trois questions:

1. Comment puis-je affecter ces éléments de recherche aux variables input1, input2, respectivement, sur mon script python?

2. Où dois-je placer mon script à proximité de ce code?

import sys 

for f in sys.stdin: 
    print f, 

3. Quelle est la difference entre stdin, arguments?

Répondre

1

Le flux de travail complet devrait être quelque chose comme ceci:

enter image description here

Dans l'étape Run Shell Script vous devez définir Pass Input:-as arguments, de sorte que vous pouvez utiliser le tableau sys.args. Votre script Python peut être modifié comme suit:

import sys 

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

View Results étape est uniquement pour le débogage.

Si vous définissez Pass Input: à to stdin, les arguments d'entrée sont passés à votre script via pipeline.

+0

je ne peux pas sembler l'obtenir pour créer le fichier de sortie. il n'y a rien dans le Finder & Folders qui crée un nouveau fichier que je peux voir. . . aussi, je ne peux pas l'obtenir pour imprimer les données qui reviennent. J'ai traîné Afficher les résultats après le script Exécuter Shell et cela n'a pas fonctionné quand j'ai couru l'application (pas dans l'automateur) –

0

Vous pouvez simplement utiliser 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} 
Questions connexes