On 21.02.2010, at 15:20, has wrote:

Thanks! I made working examples for both, but I guess the first has AppleScript 
limitations like requiring a UI context.

> mactypes.Alias doesn't provide flatten/unflatten APIs, but it's just a 
> wrapper around aem.ae.AEDesc, which does.

import base64

import mactypes, aem

# Raises ValueError.
alias = mactypes.Alias("/Users/towb/test")
data = alias.desc.flatten()
string = base64.b64encode(data)

# Now store, move and rename file, load back.

data = buffer(base64.b64decode(string))
# aem.ae.MacOSError -50 if bad.
desc = aem.ae.unflattendesc(data)
# makewithdesc does not raise.
alias = mactypes.Alias.makewithdesc(desc)
# aem.ae.MacOSError -43 if lost.
print alias.path

> NSURL has a 'bookmark' feature in 10.6+.

import base64

from Foundation import *

url = NSURL.fileURLWithPath_("/Users/towb/test")
data = 
url.bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_(
   0, None, None, None)
if not data:
   raise IOError("file not found")
string = base64.b64encode(data)

# Now store, move and rename file, load back.

data = buffer(base64.b64decode(string))
url = 
NSURL.URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_(
   data, (1 << 8), None, None, None)
   # Named constants don't work?
if not url:
   raise StandardError("bad or lost")
print url.path()

_______________________________________________
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG

Reply via email to