python speichern von Pfad-Namen mit forward vs. backward slash

Ich habe eine Prozedur, die os.walks ein Verzeichnis und dessen Unterverzeichnissen zum filtern von pdf-Dateien, die Trennung Ihrer Namen und den entsprechenden Pfadnamen. Das Problem, das ich habe ist, dass es scannt das oberste Verzeichnis und drucken Sie den entsprechenden Dateinamen z.B. G:/Books/Title.Pdf aber der zweite scannt es ein Unterordner e.g G:/Books/Sub Folder/Title.pdf es wird gedruckt, die folgenden

G:/Books/Sub Folder\\Title.Pdf

(das ist natürlich ein Ungültiger Pfadname). Es wird auch hinzufügen, \ \ bis alle Unterordner in Unterordner.

Unten ist die Prozedur:

def dicitonary_list():
    indexlist=[]        #holds all files in the given directory including subfolders
    pdf_filenames=[]    #holds list of all pdf filenames in indexlist
    pdf_dir_list = []   #holds path names to indvidual pdf files 

    for root, dirs,files in os.walk('G:/Books/'):
        for name in files:
            indexlist.append(root + name)
            if ".pdf" in name[-5:]:
                pdf_filenames.append(name)

    for files in indexlist:
        if ".pdf" in files[-5:]:
            pdf_dir_list.append(files)

    dictionary=dict(zip(pdf_filenames, pdf_dir_list))       #maps the pdf names to their directory address

Ich weiß, es ist etwas einfach, dass ich bin fehlt, aber für die Liebe noch Geld, kann ich sehen, was es ist. Ein frisches paar Augen würde sehr helfen!

  • G:/Books/Sub Folder\\Title.Pdf ist eine perfekt gültige Pfadnamen, wenn die \\ interpretiert werden als Python-string-notation für eine einzelne \ . Wie drucken Sie den Pfad?
  • Statt indexlist.append(root + name) Sie verwenden sollten indexlist.append(os.path.join(root,name))
  • os.path.sep wird Ihnen sagen, die richtige Trennlinie zu verwenden für das Betriebssystem, das Sie auf ... es gibt viele os.Pfad Stoffe, die helfen können, diese Art der Sache...
InformationsquelleAutor Robert Lear | 2012-09-05
Schreibe einen Kommentar