Path

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Vor lauter Arbeiten mit dem Filesystem hing mir Python schon fast raus. Ich hab mir aus diesem Grund eine netter Klasse geschrieben, die hoffentlich alle diese Bereiche abdeckt: http://trac.pocoo.org/repos/sandbox/path/path.py

Da es keine wirklich gute Docu atm gibt, hier mal ein Doctest:

Code: Alles auswählen

>>> from path import Path
>>> test = Path('~/testfile.txt')
>> test
Path('/home/blackbird/testfile.txt')
>>> test.exists
True
>>> test.delete()
>>> test.exists
False
>>> f = test.open('w')
>>> f.write(u'Hello Wörld')
>>> f.close()
>>> test.exists
True
>>> f = test.open('rb')
>>> f.read()
'Hello W\xc3\xb6rld'
>>> f.close()
>>> f = test.open('r')
>>> f.read()
u'Hello W\xf6rld'
>>> f.close()
>>> test.mtime
datetime.datetime(2006, 5, 27, 8, 31, 26)
>>> test.delete()
Die wichtigsten Sachen werden hier glaub ich erklärt. Zumindest was Dateien lesen/schreiben angeht. "r", "w", "a" Modi werden mit codecs.open geöffnet, ergo muss man das charset übergeben, wenn man es nicht tut nimmer er 'utf-8' an. genauers gibts help(Path.open) aus.

Alle wichtigen Dateieigenschaften sind properties und geben auch sinnvolle Werte aus. Das heißt zb. datetime Objekte anstatt unix timestamps.

Ich hoffe es kann auch auser mir noch jemand brauchen, bei Fehlern bescheid sagen.

//EDIT: jetzt kann man auch mit path rechnen:

Code: Alles auswählen

>>> from path import Path
>>> fn = Path('myfile.txt')
>>> fn + 5
Path('/home/blackbird/Developement/sandbox/path/myfile5.txt')
>>> fn + 5 - 9
Path('/home/blackbird/Developement/sandbox/path/myfile0.txt')
>>> fn + 5 - 2
Path('/home/blackbird/Developement/sandbox/path/myfile3.txt')
:-)
TUFKAB – the user formerly known as blackbird
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

blackbird hat geschrieben:

Code: Alles auswählen

Path('/home/blackbird/Developement/sandbox/path/myfile5.txt')
>>> fn + 5 - 9
Path('/home/blackbird/Developement/sandbox/path/myfile0.txt')
Es ist schon etwas spät aber gäbe 5 - 9 nicht -4 und nicht 0? Oder hast du entschieden dass nur N0+ sinnvoll ist?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Leonidas hat geschrieben:
blackbird hat geschrieben:

Code: Alles auswählen

Path('/home/blackbird/Developement/sandbox/path/myfile5.txt')
>>> fn + 5 - 9
Path('/home/blackbird/Developement/sandbox/path/myfile0.txt')
Es ist schon etwas spät aber gäbe 5 - 9 nicht -4 und nicht 0? Oder hast du entschieden dass nur N0+ sinnvoll ist?
Letzteres. Weil ein "-" in einem Dateinamen kann ein Trenner sein und muss kein vorzeichen für die Zahl sein. DSC-4234 + 1 soll ja nicht DSC-4233 sondern DSC-4335 geben.
TUFKAB – the user formerly known as blackbird
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

nett, dass sich mal jemand auf dem bereich die mühe gemacht hat
BlackJack

Das mit dem Rechnen ist originell.

Aber der Name des Moduls ist schon länger "belegt". Jason Orendorff's `path.py` mit einem `Path` Objekt wird schon von vielen Leuten benutzt und wird regelmässig als Modul für die Standardbibliothek vorgeschlagen. Gibt auch ein PEP dazu: PEP 355.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

BlackJack hat geschrieben:Das mit dem Rechnen ist originell.

Aber der Name des Moduls ist schon länger "belegt". Jason Orendorff's `path.py` mit einem `Path` Objekt wird schon von vielen Leuten benutzt und wird regelmässig als Modul für die Standardbibliothek vorgeschlagen. Gibt auch ein PEP dazu: PEP 355.
Das ist mir bewusst :-) Aber Orendorffs Path ist noch sehr an os.path gebunden wärend mein Modul erst gar nicht versucht so zu funktionieren ^^
Intern werden immer absolute Pfade gespeichert und auf den Blödsinn mit von str ableiten hab ich verzichtet ;-)
TUFKAB – the user formerly known as blackbird
Antworten