Path

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

Path

Beitragvon mitsuhiko » Samstag 27. Mai 2006, 07:34

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Path

Beitragvon Leonidas » Samstag 27. Mai 2006, 22:46

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 Modvoice
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Re: Path

Beitragvon mitsuhiko » Sonntag 28. Mai 2006, 11:31

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:

Beitragvon murph » Sonntag 28. Mai 2006, 11:53

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

Beitragvon BlackJack » Sonntag 28. Mai 2006, 23:06

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.
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Montag 29. Mai 2006, 08:41

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder