Seite 1 von 1

fullpath = relpath[0:-1]

Verfasst: Donnerstag 1. März 2018, 18:55
von sebil
Hallo,
ich habe als absoluter Python-Anfänger mit einem Script zu tun, dass nicht richtig funktioniert. Ein bisschen PHP ist mir geläufig.
Meine Frage. Was passiert hier:

Code: Alles auswählen

fullpath = relpath[0:-1]

Re: fullpath = relpath[0:-1]

Verfasst: Donnerstag 1. März 2018, 19:18
von noisefloor
Hallo,

was verstehst du denn nicht? Was das [0:-1] macht? Das Stichwort lautet: slicing

Falls aber `relpath` die Funktion aus dem `os.path` Modul ist kann das so nicht funktionieren.

Gruß, noisefloor

Re: fullpath = relpath[0:-1]

Verfasst: Donnerstag 1. März 2018, 20:08
von sebil
Aha, also wird da was abgeschnitten? 0 bis -1. Oder ist -1 nicht eh der letzte character in einem string? Also ist das völlig überflüssig?

Re: fullpath = relpath[0:-1]

Verfasst: Donnerstag 1. März 2018, 20:12
von noisefloor
Hallo,

-1 ist das letzte Element des "iterable", dass man sliced - aber _exklusive_.

Beispiel:

[codebox=pycon file=Unbenannt.txt]>>> wort = 'Tage'
>>> wort[0:-1]
'Tag'[/code]

Gruß, noisefloor

Re: fullpath = relpath[0:-1]

Verfasst: Donnerstag 1. März 2018, 20:54
von sebil
OK, danke! Hier geht es wohl um einen Slash "/", der entfernt wird.

Re: fullpath = relpath[0:-1]

Verfasst: Donnerstag 1. März 2018, 21:01
von noisefloor
Hallo,

möglich... sauber ist das aber nicht. Weil: wenn kein Slash da ist, dann ist das letzte Zeichen weg. Zum Entfernen sollte man dann eher die `normpath` Methode aus `os.path` nehmen:

[codebox=pycon file=Unbenannt.txt]>>> path = '/home/foo/bar/'
>>> os.path.normpath(path)
'/home/foo/bar'
>>>[/code]

Gruß, noisefloor

Re: fullpath = relpath[0:-1]

Verfasst: Freitag 2. März 2018, 08:16
von Sirius3
@sebil: wie wird aus einem relativen Pfad ein voller, wenn man das letzte Zeichen abschneidet?
Suchst Du so etwas wie

Code: Alles auswählen

fullpath = os.path.abspath(relpath)
noisefloor hat geschrieben:-1 ist das letzte Element des "iterable", dass man sliced
[Besserwisser]man kann nur Sequenzen slicen, Iterablen müssen keine definierte Länge haben, man kann also auch nicht von Hinten zählen.[/Besserwisser]

Re: fullpath = relpath[0:-1]

Verfasst: Freitag 2. März 2018, 10:58
von noisefloor
Hallo,
[Besserwisser]man kann nur Sequenzen slicen, Iterablen müssen keine definierte Länge haben, man kann also auch nicht von Hinten zählen.[/Besserwisser]
:-)

Gruß, noisefloor

Re: fullpath = relpath[0:-1]

Verfasst: Freitag 2. März 2018, 11:42
von sebil
Danke. Alles sehr interessante Informationen.
Ich suche ein verdammt kompliziertes Script und habe eines gefunden, das leider Fehler hat.
Ich dachte mit dem fixen des einen Fehlers würde es funktionieren, aber denkste. Der nächste, scheinbar absolut komplizierte, Fehler tritt auf und ich gebe auf. Werde mir selbst eins in PHP coden, da kenne ich mich besser aus. Aber schön mal eine Ausflug nach Python gemacht zu haben.