Wenn Sie den Pfad auf natürliche Weise sortieren möchten (nach Zahlen sortieren), geben Sie einen Lambda-Ausdruck wie unten gezeigt in key
ein.
natsorted(list(pathlib.Path(Pfad).glob("*")),key=lambda x:x.name)
Folgendes beiseite
Bei der Konvertierung einer großen Anzahl von Bildern in PDF mussten die Bilddaten sortiert werden. Der Name der Bilddatei sieht folgendermaßen aus.
1.jpg
200.jpg
12.jpg
...
Ich möchte sie nach den Zahlen ordnen, also möchte ich sie natürlich sortieren, anstatt sie in einem Wörterbuch zu sortieren. Als ich es mit "pathlib" bekam und mit "natsort" sortierte, sah es so aus.
PosixPath('/Users/usrname/images/1.jpg'),
PosixPath('/Users/usrname/images/10.jpg'),
PosixPath('/Users/usrname/images/20.jpg'),
...
Nein, bitte arbeiten Sie mit natsort
. Ich dachte, aber es scheint nicht nach Pfad zu sortieren. Die Gegenmaßnahmen waren jedoch fest in der Referenz verankert.
Auszug aus der Natsort-Referenz.py
>>> a = ['apple2.50', '2.3apple']
>>> natsorted(a, key=lambda x: x.replace('apple', ''), alg=ns.REAL)
['2.3apple', 'apple2.50']
Es scheint gut, key
auf die gleiche Weise wie sort
anzugeben. Der zu sortierende Dateiname wird ausgelöst. Dies ist in der "pathlib" -Referenz gut geschrieben,
Auszug aus der Pathlib-Referenz.py
>>> PurePosixPath('my/library/setup.py').name
'setup.py'
Mit anderen Worten, .name
kann das Ende des Pfades annehmen. Wenn Sie sie in Kombination verwenden, können Sie sie sortieren.
Die Formel wird weggelassen, weil sie am Anfang steht. Als ich es versuchte, sah es so aus.
PosixPath('/Users/usrname/images/1.jpg'),
PosixPath('/Users/usrname/images/2.jpg'),
PosixPath('/Users/usrname/images/3.jpg'),
...
Es war gut sortiert. Herzliche Glückwünsche
Recommended Posts