Pythonmania

Script Different!

Suchen in:
Suche:
Startseite | Schockwellenreiter | Impressum
Navigation
Artikel zu Python
Warum Python?
Hallo Welt
Wie alt ist der Kapitän?
Schmetterlingskurve
Apfelmännchen
Dancing Python
User-Agenten
fakeMail()
Template Engine
Python & XML (1)
wxPython (1)
wxPython (2)
wxPython (3)

How To's
ftp mit Python
Filedialog
Piddle und Mac OS X
XML-RPC
Blogger API

Zope und Python
ZWiki und Plone
Navigation und DTML
»Last Update«

Book Reviews
Python und Tkinter
Python Cookbook

Alte Artikel
O'Reilly
MacPython & Tkinter (d)
MacPython & Tkinter (e)
Modul W
Easy Dialogs
File Dialogs

Archiv
Oktober 2009
Juni 2009
Mai 2009
April 2009
März 2009
Februar 2009
Januar 2009
Dezember 2008
November 2008
Oktober 2008
September 2008
August 2008
Juli 2008
Juni 2008
Mai 2008
April 2008
März 2008
Februar 2008
Januar 2008
Dezember 2007
November 2007
Oktober 2007
September 2007
August 2007
Juli 2007
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006
November 2006
Oktober 2006
September 2006
August 2006
Juli 2006
Juni 2006
Mai 2006
April 2006
März 2006
Februar 2006
Januar 2006
Dezember 2005
November 2005
Oktober 2005
September 2005
August 2005
Juli 2005
Juni 2005
Mai 2005
April 2005
März 2005
Februar 2005

RSS Icon
[フレーム]
Anzeigen
[フレーム]

Notebook

File Dialogs

Streifzüge durch einige Macintosh Library Module (2)

Neben den im letzten Artikel angesprochenen einfachen Dialogen benötigt man häufig auch Dialoge, die den Benutzer nach Dateien oder Ordnern suchen lassen. Diese Dialoge werden in dem Modul macfs zur Verfügung gestellt. Für alle nachfolgend aufgeführten Beispiele gilt daher, daß

>>> import macfs

vorher aufgerufen wurde.

Das FSSpec Objekt

Macintosh-spezifisch erwarten viele der Funktionen ein FSSpec-Objekt als Parameter. Dies ist im Prinzip eine Art 3-Tupel mit (wdRefNum, parID, name), das im Dateisystem des Finders eine Datei eindeutig beschreibt. Das Objekt besitzt einige Methoden, die den Umgang mit ihm vereinfachen. Die wichtigsten sind:

as_pathname()
Gibt dem vollen Pfadnamen der Datei zurück, die mit dem FSSpec-Objekt beschrieben wurde.

as_tuple()
Gibt das 3-Tupel (wdRefNum, parID, name) des FSSpec-Objekts zurück. (Zur Bedeutung des Tupels siehe Inside Macintosh: Files, speziell hier.)

GetCreatorType()
Gibt den Creator und den Filetype zurück, bei Python Sources z.B. ('Pide', 'TEXT').

SetCreatorFileType(creator, type)
Setz den Creator und den Filetype für das angegebene Objekt.

GetDates()
Gibt ein 3-Tupel mit drei Fließkommawerten zurück, je einen für das creation date, das modification date und das backup date.

SetDates(crdate, moddate, backupdate)
Setzt die Daten. Die Daten sind die in Python üblichen Fließkommazahlen für Datumswerte. Zur Umrechnung wird man daher sinnvollerweise das Module time einsetzen.

Die File-Dialoge

Wann immer die folgenden Methoden ein file-Argument benötigen, kann entweder ein vollständiger oder ein relativer Pfad zu einer Datei, ein FSSpec-Objekt oder ein 3-Tupel (wdRefNum, parID, name) angeegeben werden.

StandardGetFile([type, ...])
Erzeugt die Standard-File-Dialogbox. Es können optional bis zu vier Dateitypen übergeben werden, die die Auswahl, die der User treffen kann, auf diese Filetypen einschränken.

>>> fss, ok = macfs.StandardGetFile("TEXT")

erzeugt folgende Dialogbox:

[画像:Standard-File-Dialog]

Wie man sieht, kann der Benutzer nur nocht Textdateien auswählen. Zurückgegeben wird einmal ein FSSpec-Objekt und zum anderen ein Flag, der "1" zurückgibt, wenn der Benutzer den Dialog beendet hat, ohne den Cancel-Button zu drücken.

PromptGetFile(prompt [, type, ...])
Analog zu StandardGetFile(), nur daß noch ein String mit übergeben werden kann, der oben in der Dialogbox zusätzlich angezeigt wird.

Es ist zu beachten, daß die Dialoge nur ein FSSpec-Objekt (und einen Flag) zurückgeben. Um damit etwas anzufangen, muß daraus erst ein Python-Fileobjekt erzeugt werden. Folgender Code-Schnipsel zeigt, wie das geht:

import macfs

fss, ok = macfs.StandardGetFile("TEXT")

if ok:
test = open(fss.as_pathname(), "r")
s = test.read()
print s
test.close()
else:
print "Keine Datei ausgesucht."


Wie man sieht, können wir mit der Methode as_pathname() leicht aus einem RSS-Objekt ein Python-File-Objekt erzeugen.

StandardPutFile(prompt [, default])
Erzeugt den Macintosh-üblichen Dateisicherungsdialog. prompt ist wieder eine Mitteilung an den Benutzer und default ist ein Vorschlag für den Dateinamen.

>>> fss, ok = macfs.StandardPutFile("Wohin speichern?", "name.txt")

erzeugt also folgende Dialogbox:

[画像:Filedialogbox]

Natürlich läßt sie sich aufklappen und zeigt dann wie die GetFile()-Boxen die beiden Auswahlfensterchen.

Es ist zu beachten, daß auch mit dieser Box erst einmal nur ein RSSpec-Objekt und ein Flag, ob der Benutzer den Cancel-Button gedrückt hat oder ob die Auswahl abgeschlossen wurde, zurückgegeben wurde. Gespeichert ist noch gar nichts.Wie z.B. ein String dann abgespeichert wird, zeigt folgendes Stückchen Code:

import macfs

fss, ok = macfs.StandardPutFile("Wohin speichern?", "name.txt")

if ok:
test = open(fss.as_pathname(), "w")
test.write("Dies ist ein Test!")
test.flush()
else:
print "Keine Datei ausgesucht."


Ob die Datei dann auch noch mit test.close() geschlossen wird, ist eine Geschmacksfrage -- in der Regel übernimmt Python das Schließen der Dateien. Ich neige jedoch dazu, Dateien, die ich geöffnet habe, auch wieder ordnungsgemäß zu schließen.

GetDirectory([prompt])
Das Verhalten dieses »Select a Directory«-Dialogs ist ein wenig unlogisch. Es muß das Directory geöffnet werden und eine (unter Umständen nichtexistente) Datei ausgewählt werden, damit das gewünschte Verzeichnis zurückgegeben werden kann.

Auch diese Methode retourniert ein FSSpec-Objekt und einen Erfolgs-Flag.

Das sind die für den Alltagsgebrauch wichtigsten Dialoge aus den Macintosh Library Modulen. Die Module besitzen natürlich noch mehr Funktionen, z.B. um mit Aliasen umzugehen. Die Dokumentation auf den Seiten von Python.org gibt darüber erschöpfend Auskunft.

Auch diese Module funktionieren sowohl in der MacPython-IDE als auch im Interpreter.






Werbung:

Letzte Änderung: 16.08.2010; 16:10:19 Uhr | © Copyright: 2000 - 2010 by Kantel-Chaos-Team | Kontakt: der@schockwellenreiter.de

frontierLogo picture Made with a Mac Weblog Commenting and Trackback by HaloScan.com CC-Logo Site Meter

AltStyle によって変換されたページ (->オリジナル) /