ich kann
>>> os.path.join("c:/","home","foo","bar","some.txt")
'c:/home\\foo\\bar\\some.txt'
Aber wenn ich es mache
>>> s = "c:/,home,foo,bar,some.txt".split(",")
>>> os.path.join(s)
['c:/', 'home', 'foo', 'bar', 'some.txt']
Was vermisse ich hier?
python
python-2.7
os.path
ATOzTOA
quelle
quelle
/Users/...
. Um es zu lösen, habe ich diesen führenden Schrägstrich manuell hinzugefügt, falls jemand vor dem gleichen Problem steht ...Angenommen, es
join
wurde nicht so entworfen (was es ist, wie ATOzTOA hervorhob), und es wurden nur zwei Parameter benötigt, könnten Sie dennoch das integrierte verwendenreduce
:Gleiche Ausgabe wie:
Nur aus Gründen der Vollständigkeit und Bildung (und für andere Situationen, in denen
*
dies nicht funktioniert).Hinweis für Python 3
reduce
wurde in dasfunctools
Modul verschoben .quelle
reduce
wurde in dasfunctools
Modul verschoben, falls jemand anderes so danach suchte wie ich.reduce
zu einem Modul ist eine Aussage.from functools import reduce
Ich stolperte über die Situation, in der die Liste leer sein könnte. In diesem Fall:
Beachten Sie das erste Argument, das das Ergebnis nicht verändert.
quelle
Es ist nur die Methode. Du vermisst nichts. Die offizielle Dokumentation zeigt, dass Sie das Entpacken von Listen verwenden können, um mehrere Pfade anzugeben:
Beachten Sie die
*s
Intead von nurs
inos.path.join(*s)
. Die Verwendung des Sternchens löst das Entpacken der Liste aus. Dies bedeutet, dass jedes Listenargument als separates Argument an die Funktion übergeben wird.quelle
Dies kann auch als einfache Kartenreduktionsoperation betrachtet werden, wenn Sie dies aus einer funktionalen Programmierperspektive betrachten möchten.
reduce
ist in Python 2.x integriert. In Python 3.x wurde es nach verschoben.itertools
Die akzeptierte Antwort ist jedoch besser.Dies wurde unten beantwortet, aber beantwortet, wenn Sie eine Liste von Elementen haben, die verbunden werden müssen.
quelle