2009-12-15 71 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

相關問題