fullpath = relpath[0:-1]

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sebil
User
Beiträge: 8
Registriert: Donnerstag 1. März 2018, 17:02

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]
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
sebil
User
Beiträge: 8
Registriert: Donnerstag 1. März 2018, 17:02

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?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
sebil
User
Beiträge: 8
Registriert: Donnerstag 1. März 2018, 17:02

OK, danke! Hier geht es wohl um einen Slash "/", der entfernt wird.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@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]
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
sebil
User
Beiträge: 8
Registriert: Donnerstag 1. März 2018, 17:02

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.
Antworten