2009-12-15 41 views
1

让你的newb-shields,我即将撒上一些。
我试图得到的Photoshop CS4打开JPEG图像与AppScript + Python,它可以像这样在BASH描述的folderful:如何使用appscript和Python将文件列表提供给应用程序?

#!/bin/bash 
for F in `ls ~/Desktop/test`; do 
    open -a "Adobe Photoshop CS4" $F 
    # proceed to mutilate the image appearance 
done 

我在ls ~/Desktop/test阶段失败。我真的很想问Finder为我列出一个文件夹,并将结果一次一个地输入到Photoshop来处理它们。
一个JavaScript等效采用Adobe的ExtendScript桥将是:

#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); 
    } 
} 

我可以得到我document_file对象与像x = app('Finder').home.folders['Desktop']().folders['test']().items()[0]一个可怕的傻玩意儿,但原来是一个非常愚蠢的对象。试图以app('Adobe Photoshop CS4').open(x)这个对象将抛出一个OSERROR: 1230,与MESSAGE: File/Folder expected

(嗯,哦,这document_file居然回应URL(),使File.makewithurl(x.URL())可以被送入open()

埃姆,已经解决了,有没有办法通过询问查找器列表中真正做到这一点指定文件夹中的文件,由指定UNIX路径

+0

为什么这有一个applescript标记?错字? – 2009-12-15 20:40:17

回答

3

Photoshop的打开命令需要别名对象(或别名对象列表)。

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... 
+0

此外,OS X不是使用Finder的脚本界面,而是提供隐藏的脚本应用程序“System Events.app”,其中包含具有各种属性的“磁盘文件夹文件”套件。而且,在某些情况下,使用Python模块(例如os.listdir等)进行文件搜索并使用appscript的别名来形成正确的参考可能会更简单。 – 2009-12-15 19:39:33

+0

明白了。谢谢,谢谢Ned。 – godDLL 2010-01-05 03:30:06

相关问题