[Pythonmac-SIG] detecting aliases
Lee Cullens
lee_cullens at mac.com
Mon Jun 6 06:52:00 CEST 2005
Thanks for the reply Bob. I've been digging around in the Python
Documentation Macintosh and more specifically Carbon.File.
(All seems to be a bit of a secret society :~) with scant docs that
are not up to date and no content in __doc__s so it's a little hard
going)
What you noted doesn't seem to work verbatim for me, but noting the
following from the Python site googling:
ResolveAliasFile(file) Resolve an alias file. Returns a 3-tuple
(fsspec, isfolder, aliased) where fsspec is the resulting FSSpec
object, isfolder is true if fsspec points to a folder and aliased is
true if the file was an alias in the first place (otherwise the
FSSpec object for the file itself is returned).
and following your lead I got the following where ppath is an Aqua
alias to a folder so I need to check for an Aqua alias to a file:
>>> FSResolveAliasFile(ppath, 1)
(<Carbon.File.FSRef object at 0xe0a70>, 1, 1)
>>> FSResolveAliasFile(ppath, 1)[0].as_pathname()
'/Library/Documentation'
with the FSRef though I get the following
>>> def is_alias(ppath):
... return FSRef(ppath)[0]
...
>>> ppath = '/Users/Chinook/Documents/Personal/Sys Documentation
alias 1'
>>> is_alias(ppath)
Traceback (most recent call last):
File "/Applications/WingIDE-Professional-2.0.3/WingIDE.app/
Contents/MacOS/src/debug/server/_sandbox.py", line 1, in ?
# Used internally for debug sandbox under external interpreter
File "/Applications/WingIDE-Professional-2.0.3/WingIDE.app/
Contents/MacOS/src/debug/server/_sandbox.py", line 2, in is_alias
if __name__ == '__main__':
TypeError: unsubscriptable object
Or from the Terminal:
Python 2.4.1 (#2, Mar 31 2005, 00:05:10)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1666)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> from Carbon.File import FSResolveAliasFile, FSRef
>>> FSRef('/Users/Chinook/Documents/Personal/Sys Documentation alias
1')
<Carbon.File.FSRef object at 0x16cd8>
>>> def is_alias(ppath):
... return FSRef(ppath)[0]
...
>>> ppath = '/Users/Chinook/Documents/Personal/Sys Documentation
alias 1'
>>> is_alias(ppath)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 2, in is_alias
TypeError: unsubscriptable object
>>>
Guess I'll have to do some more googling, but it (tentatively) looks
like I'm getting back a file ref object as if .data is a default and
I have to look at what other methods are available.
Thanks again,
Lee C
On Jun 5, 2005, at 11:02 PM, Bob Ippolito wrote:
>
> On Jun 5, 2005, at 7:09 PM, Lee Cullens wrote:
>
>
>> One of my little utilities needs to know when it encounters links/
>> aliases.
>>
>> I can of course detect a Unix symbolic link with os.path.islink
>> ('path') and determine what it points to with os.readlink('path'),
>> but an Aqua alias only triggers os.isfile and it has a size of zero.
>> The size is not a reliable indicator though and I was wondering how
>> (in Python) to detect such and determine what it points to.
>>
>> Is this one of those OS unique things where I need to get into the
>> dev tools to resolve? I've been putting such off till I get into
>> ObjC, since Bob said I would understand the interfaces better then.
>>
>
> Aliases have nothing to do with Objective-C, they're only dealt
> with from Carbon.
>
> import os
> from Carbon.File import FSResolveAliasFile, FSRef
>
> def resolve_alias(path):
> # resolve an alias, if not an alias then it will just return the
> # given path.
> return FSResolveAliasFile(path, True)[0].as_pathname()
>
> def is_alias(path):
> # return 1 if an alias, 0 otherwise
> return FSRef(path)[0]
>
> -bob
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/pythonmac-sig/attachments/20050606/d5684f57/attachment.html
More information about the Pythonmac-SIG
mailing list