2010-12-13 5 views
1

Ist es möglich, eine Reihe ausgewählter Dateien zu durchlaufen, jede zu verarbeiten und die Ausgabe als neue Dateien mit Apple Automator zu speichern?Apple Automator CSV-Dateien verarbeiten und neue Dateien erstellen

Ich habe eine Sammlung von .xls-Dateien, und ich habe Automator gelernt

- Ask for Finder Items 
- Open Finder Items 
- Convert Format of Excel Files #save each .xls file to a .csv 

Ich habe ein Python-Skript geschrieben, das einen Dateinamen als Argument akzeptiert, verarbeitet sie und speichert sie als p_filename in dem Verzeichnis, aus dem das Skript ausgeführt wird. Ich versuche Run Shell Script mit dem /usr/bin/python Shell und mein Python-Skript in geklebt zu verwenden.

Manches übersetzen nicht allzu gut, aber vor allem, weil ich nicht sicher bin, wie es befasst sich mit open('filename','w') Befehl des Python. Es hat wahrscheinlich keine Berechtigungen zum Erstellen neuer Dateien oder ich gebe den Befehl falsch ein. Ich hatte die Idee, die verarbeitete Datei stattdessen als Text auszugeben, mit Automator zu erfassen und dann in einer neuen Datei zu speichern.

Um dies zu tun, habe ich versucht, New Text File zu verwenden, aber ich bekomme es nicht, um eine neue Textdatei für jede Datei zu erstellen, die am Anfang ausgewählt wurde. Ist es möglich, alle ausgewählten Finder-Objekte durchzublättern?

Antwort

1

Warum möchten Sie dies im Ordner des Skripts getan? Oder meinst du den Ordner der Dateien, die du von den Finder-Items bekommst? In diesem Fall muss nur der Pfad für jede Datei in Python übergeben werden.

Wenn Sie öffnen ('filename', 'w') sollten Sie also einen vollständigen Pfadnamen übergeben. Wahrscheinlich passiert es, dass Sie tatsächlich in das Stammverzeichnis schreiben, anstatt wo Sie denken, dass Sie es sind.

Angenommen, Sie Ihre Dateien auf dem Shell-Befehl in Automator vorbei als Argumente dann haben Sie vielleicht die folgenden:

import sys, os 

args = sys.argv[1:] 
for a in args: 
    p = os.path.dirname(a) 
    mypath = p + "/" + name 
    f = open(mypath, "w") 
+0

Wäre es nicht besser, den Weg zu konstruieren os.path.join verwenden? – nekomatic

Verwandte Themen