Come si fa a nutrire un elenco di file in un'app con appscript e Python?
-
19-09-2019 - |
Domanda
i tuoi newb schermi up, sto per cospargere con un po '.
Sto cercando di ottenere Photoshop CS4 per aprire un folderful di immagini JPEG con AppScript + Python, che potrebbero essere descritti in questo modo in bash:
#!/bin/bash
for F in `ls ~/Desktop/test`; do
open -a "Adobe Photoshop CS4" $F
# proceed to mutilate the image appearance
done
Sono in mancanza nella fase ls ~/Desktop/test
. Mi piacerebbe davvero chiedere Finder per elencare una cartella per me, e alimentare il risultato in Photoshop uno alla volta per elaborarli.
Un equivalente JavaScript con il ponte ExtendScript di Adobe potrebbe essere:
#target photoshop
var folder = Folder("~/Desktop/test");
var images = folder.getFiles();
for (var i=0; i < images.length; i++) {
if (images[i] instanceof File && images[i].hidden == false) {
var doc = app.open(images[i]);
// do something to the image here
doc.close(SaveOptions.DONOTSAVECHANGES);
}
}
I mi può ottenere un oggetto document_file
con un aggeggio terribilmente stupido come x = app('Finder').home.folders['Desktop']().folders['test']().items()[0]
, ma che si rivela essere un oggetto davvero sciocco. Cercando di app('Adobe Photoshop CS4').open(x)
questo oggetto getterà un OSERROR: 1230
, con un MESSAGE: File/Folder expected
.
(Uh-oh, questo document_file
risponde effettivamente URL()
, così File.makewithurl(x.URL())
può essere immessa nella open()
)
Ehm, dopo aver risolto questo, c'è un modo per farlo in realtà questo chiedendo Finder per l'elenco dei file in una determinata cartella specificata da un percorso UNIX ?
Soluzione
comando di apertura di Photoshop richiede un oggetto alias (o un elenco di oggetti alias).
from appscript import *
folder = '/path/to/folder'
ps = app('Adobe Photoshop CS4')
for f in app('Finder').items[mactypes.Alias(folder)].files.get(resulttype=k.alias):
ps.open(f)
# do stuff here...