has wrote: > matthias oberlaender wrote: > >I would very much like to get and set the color label (or 'label index') > >of a file programmatically from Python. I spent quite some time googling, > >but was unable to extract the necessary bits how to do it with a few > >Carbon calls. > > Dunno about Carbon APIs, but it's easy enough using IPC: > > #!/usr/bin/env pythonw > > from appscript import * > from macfile import Alias > > path = '/Users/has/test.txt' > label = 3 > > app('Finder').items[Alias(path)].label_index.set(label) > print app('Finder').items[Alias(path)].label_index.get() > > > See <http://freespace.virgin.net/hamish.sanderson/appscript.html>. > Note: if you install appscript using the binary installer (easiest), > you'll also need to d/l the latest appscript-0.13.1.tar.gz package from < > http://freespace.virgin.net/hamish.sanderson/appscript_source.html> > and install that as well. > > HTH > > has
Looked promising. Very concise. Thank you very much. However, I had no look installing appscript. I installed the two packages as you suggested (OS X 10.3 with Apple supplied Python). Below is what happened. Maybe some more updates necessary? (I assume installing appscript-0.13.1.tar.gz was meant as a patch to the pure binary installation.) from appscript import app from macfile import Alias import os path = '/Users/oberlaender/dead.letter' assert os.path.exists(path) print app('Finder').items[Alias(path)].label_index.get() Without AppscriptTerminologyServer running: pythonw -i test.py Traceback (most recent call last): File "test.py", line 8, in ? print app('Finder').items[Alias(path)].label_index.get() File "/Users/oberlaender/Desktop/appscript-0.13.1/appscript/specifier.py", line 390, in __init__ translationTables = tablesForLocalApp(path) File "/Users/oberlaender/Desktop/appscript-0.13.1/appscript/translationtablereader.py", line 142, in tablesForLocalApp classes, enums, properties, elements, commands = buildTables(path) File "/Users/oberlaender/Desktop/appscript-0.13.1/appscript/translationtablebuilder.py", line 99, in buildTables aeteparser.parse(getaete(path), p) File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/osaterminology/aeteparser.py", line 254, in parse File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/osaterminology/aeteparser.py", line 64, in list File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/osaterminology/aeteparser.py", line 182, in _parseSuite File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/osaterminology/aeteparser.py", line 64, in list File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/osaterminology/aeteparser.py", line 100, in _parseCommand TypeError: start_command() takes exactly 6 arguments (7 given) >>> With AppscriptTerminologyServer running: pythonw -i test.py Traceback (most recent call last): File "test.py", line 8, in ? print app('Finder').items[Alias(path)].label_index.get() File "/Users/oberlaender/Desktop/appscript-0.13.1/appscript/specifier.py", line 203, in __call__ raise CommandError(self, (args, kargs), e) appscript.specifier.CommandError: event() got an unexpected keyword argument 'resulttype' Failed command: app(u'/System/Library/CoreServices/Finder.app').items[Alias(u'/Users/oberlaender/dead.letter')].label_index.get() >>> -- Matthias _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig