Sortieren einer Liste von Dateien mit Python
Muss ich kombinieren einen Ordner voller PDF-Dateien zu einer Datei. Aber Sie müssen kombiniert werden, in einer bestimmten Reihenfolge. Ein Muster der Dateinamen ist:
WR_Mapbook__1.pdf
WR_Mapbook__1a.pdf
WR_Mapbook__2.pdf
WR_Mapbook__2a.pdf
WR_Mapbook__3.pdf
WR_Mapbook__3a.pdf
etc...
Der Weise, dass Sie sind sortiert in den windows explorer ist die Art, wie ich von Ihnen Hinzugefügt sein, um eine einzelne Datei. Aber mein Skript fügt alle "a" - Dateien zuerst, und dann die Dateien ohne ein "a". Warum tut er das? Wie kann ich Sortieren, so dass die Dateien Hinzugefügt wurden, in der Art, wie ich will?
Siehe code unten. Danke!
from pyPdf import PdfFileWriter, PdfFileReader
import glob
outputLoc = "K:\\test\\pdf_output\\"
output = PdfFileWriter()
pdfList = glob.glob(r"K:\test\lidar_MB_ALL\*.pdf")
pdfList.sort
print pdfList
for pdf in pdfList:
print pdf
input1 = PdfFileReader(file(pdf, "rb"))
output.addPage(input1.getPage(0))
# finally, write "output" to document-output.pdf
outputStream = file(outputLoc + "WR_Imagery_LiDar_Mapbook.pdf", "wb")
output.write(outputStream)
print ("adding " + pdf)
outputStream.close()
InformationsquelleAutor Justin | 2011-05-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie brauchen, ist die Umsetzung "Natural Order String Comparison".
Ich hoffe, jemand hat dies getan und teilte es.
EDIT: Hier ist ein brute-force-Beispiel dies zu tun, in Python.
Ich habe bearbeitet die Antwort.
InformationsquelleAutor Pavel Repin
versuchen Sie, ( - ) nach pdfList.Art:
Den Weg, du hast es geschrieben, es wird nicht wirklich Sortieren Sie die Liste. Ich packte Ihre Liste der Dateinamen stecken Sie Sie in ein array und sortiert Sie in der Reihenfolge, die Sie Ihnen zeigen.
InformationsquelleAutor John Gaines Jr.
Ersetzen
pdfList.sort
durchpdfList = sorted(pdfList, key = lambda x: x[:-4])
oder
pdfList = sorted(pdfList, key = lambda x: x.rsplit('.', 1)[0])
zu ignorieren, die Dateiendung beim SortierenInformationsquelleAutor Roman Bodnarchuk