Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Knudsen •->

Anmeldedatum: 07.08.2006 Beiträge: 5
|
Verfasst am: 07.04.2008 - 09:04 Titel: CSV auslesen? |
|
|
Hallo an alle,
Ich habe im Forum gesucht aber nichts dergleichen gefunden.
Ich muss eine cvs datei (ursprünglich excel tabelle) auslesen. Dabei geht es vor allem um Dateinamen und um eine Zahl. Nun sollen nacheinander alle Dateien in Photoshop geöffnet werden und je nach Zahl verschiedene Skripte starten.
Die PS skripte sind kein problem, aber wie lese ich die Daten aus der CSV und wie arbeite ich dann alle dateien, deren name in der CSV stehen nacheinander ab?
Wäre Klasse falls jemand Hilfe hat.
Grüße |
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 07.04.2008 - 10:18 Titel: |
|
|
Wie sind die CSV Dateien aufgebaut? Texte sind mit oder one "? Was ist der Trenner? Csv legt den Verdacht "Komma" nahe. Aber Tab wäre einfacher (und ist häufiger anzutreffen).
Wilslt Du die Dateinamen und deren "Zubehör" per AS einlesen (open file ist das stichwort) oder (wie in Deiner PN angedacht) per "do shell script". Ersteres hat den Vorteil, daß Du alles mit AS Mitteln selbst erledigen anst, das aber vielleicht langsamer ist, vorallem, wenn Du " wegzaubern mußt. Letzteres hat den Vorteil, daß viel schon durch Perl, sed und Konsorten erledigt werden kann, was in AS Zeit kostet, aber nicht so einfach durch reine AS Programmierer zu warten ist. _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
 |
Knudsen •->

Anmeldedatum: 07.08.2006 Beiträge: 5
|
Verfasst am: 07.04.2008 - 13:40 Titel: |
|
|
die Datei ist so aufgebaut:
C1H5456;54658;BLABLA;;Bla 290;1
Das ist eine Zeile. Davon gibts eben mehrere verschiedene untereinander.
Ich benötige im Prinzip nur den ersten Wert und den letzten. Der erste ist der Dateiname, den letzten brauche ich für das Starten des jeweiligen Skripts.
Ich kann es selbstverständlich auch als tab delimited abspeichern, wenn das einfacher ist.
Schnelligkeit ist schon wichtig, da es sehr viele Zeilen werden können, und damit eben auch viele Bilder die nacheinander bearbeitet werden müssen.
Je nachdem was besser ist, könnte man auch zuerst alle mit Skriptnummer 1, dann alle mit 2 etc. abarbeiten, vielleicht geht das irgendwie besser?!?
Beim tab-seperated isses ja dann einfach nur ein tab statt ; |
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 07.04.2008 - 14:38 Titel: |
|
|
Wenn das Format so einfach ist (also keine ") dann denke ich, daß es reicht, da mit "open file" zu arbeiten, um die Datei Zeile für Zeile einzulesen. Mit "Applescript's Text Item Delimiters" eingestellt auf ";" kannst Du dann die Zeilen in Einzelelemente unterteilen und greifst einfach auf item 1 und item 6 zu.
Reicht Dir das als Jinweis? Ansonsten such hier nochmal. "Applescript's Text Item Delimiters" und das Aufteilen von Zeilen ist hier schon oft beschrieben worden. _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
 |
Knudsen •->

Anmeldedatum: 07.08.2006 Beiträge: 5
|
Verfasst am: 08.04.2008 - 15:50 Titel: |
|
|
ok, danke dir, werde es morgen testen!
Applescript macht das ja dann schon zuverlässig, was die abarbeitung der dateien in einer schleife angeht oder?
Weil die Datei muss ja dann noch in Photoshop verarbeitet werden und ich frage mich, ob AS dann solange "wartet" oder ob ich am besten noch ein delay von beispielsweise 10sekunden einfügen muss.
Edit:
Ich habe gerade noch gesucht, aber ich finde keine info, wie es bei mehreren der oben genannten Zeilen aussieht!
Im Prinzip ist das hier ja zum Einlesen die Lösung:
http://www.fischer-bayern.de/phpBB2/viewtopic.php?t=2405&highlight=delimiter
Vielen Dank nochmal für den tipp! |
|
Nach oben |
|
 |
iScript •---->


Anmeldedatum: 29.03.2001 Beiträge: 1116
|
Verfasst am: 08.04.2008 - 21:10 Titel: |
|
|
z.b. so:
set alleZeilen to paragraphs of (read file ((path to "desk" as text) & "test.txt"))
repeat with eineZeile in alleZeilen
display dialog eineZeile
end repeat
Und u.U. kommst du auch ohne Delimiters aus. Kommt drauf an, was der erste und letzte Wert so enthalten können:
set eineZeile to "C1H5456;54658;BLABLA;;Bla 290;1"
{word 1 of eineZeile, word -1 of eineZeile}
-- Ergebnis: {"C1H5456", "1"} |
|
Nach oben |
|
 |
|