Comment peut-on nourrir une liste des fichiers dans une application avec appscript et Python?
-
19-09-2019 - |
Question
Obtenez vos newb-boucliers, je vais vous saupoudrer de.
J'essaie d'obtenir Photoshop CS4 pour ouvrir une folderful d'images JPEG avec AppScript + Python, ce qui pourrait être décrit comme si dans BASH:
#!/bin/bash
for F in `ls ~/Desktop/test`; do
open -a "Adobe Photoshop CS4" $F
# proceed to mutilate the image appearance
done
Je ne au stade de ls ~/Desktop/test
. Je voudrais vraiment demander Finder à la liste un dossier pour moi, et nourrir le résultat dans Photoshop un à la fois pour les traiter.
Un équivalent JavaScript avec le pont ExtendScript Adobe serait:
#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);
}
}
Je peux me faire un objet document_file
avec un engin horriblement stupide comme x = app('Finder').home.folders['Desktop']().folders['test']().items()[0]
, mais qui se révèle être un objet vraiment stupide. Essayer de app('Adobe Photoshop CS4').open(x)
cet objet va jeter un OSERROR: 1230
, avec un MESSAGE: File/Folder expected
.
(Uh-oh, ce document_file
répond effectivement à URL()
, donc File.makewithurl(x.URL())
peut être introduit dans open()
)
Ehm, ayant résolu que, est-il un moyen de faire réellement en demandant Finder pour la liste des fichiers dans un dossier donné, spécifié par un chemin d'accès UNIX ?
La solution
commande d'ouverture de Photoshop nécessite un objet alias (ou une liste d'objets d'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...