2016-07-21 5 views
0

Ich habe ein Python-Skript, das bestimmte Verzeichnisse auf meiner Festplatte nach Kriterien abgleicht, die mit Dateien übereinstimmen. Es gibt eine Liste von Strings zurück, die die Dateinamen enthalten.
In Applescript, rufe ich das Python-Skript mit do shell script "path-to-script.py".
Wenn ich die Liste innerhalb des Python-Skripts drucke und das Skript von Applescript aus führe, erscheint es als eine einzige Zeichenfolge (zB "['string1', 'string2', ..., 'stringX']") in der Ergebnisdialog der Script Editor App.Übergeben einer Python-Liste von Zeichenfolgen an Applescript?

Weiß jemand, wie man diese Python-Liste an eine identische Applescript-Liste weitergibt?

Danke.

+0

Mögliche Duplikat [Aufruf Apple von Python ohne osascript mit oder appscript?] (http://stackoverflow.com/questions/16065162/calling-applescript-from-python-without-using-osascript-or -Appscript) – bwoebi

Antwort

1

Der einfachste Weg, dies zu tun, ist der Python-Skript der Listenelemente in separaten Zeilen drucken haben:

print("\n".join(list_of_files)) 

Und in Applescript, bricht in eine Liste diese Zeilen:

set AppleScript's text item delimiters to return 
set list_of_files to text items of (do shell script "path-to-script.py") 
+0

Danke, es funktioniert wie ein Charme! – St4rb0y

0

Es empfiehlt sich, die Textelementtrennzeichen von Applescript zunächst in einer Variablen zu speichern und sie nach dem gewünschten Vorgang wiederherzustellen. Schließen Sie das Ganze auch in einen try-Block ein, um zu vermeiden, dass die Texttrennzeichen für alle anderen Skripts, die ausgeführt werden können, in einem unerwarteten Zustand bleiben. dh

try 
    set oldDelims to AppleScript's text item delimiters 
    -- do your stuff 
    --restore default delimiters: 
    set AppleScript's text item delimiters to oldDelims 
on error 
    set AppleScript's text item delimiters to oldDelims 
end try