Datei-Liste mit Glob in Python

Ich habe eine Liste von csv-Dateien in mydir.Ich möchte die Liste der Dateinamen erhalten. Jedoch mit Glob als unten ist die Rückgabe einer leeren Liste.

import glob mydir = "C:\Data" file_list = glob(mydir + "*.csv") print('file_list {}'.format(file_list)) 

  • Schleifen durch große Dateien dauert Stunden in Python
  • Python-glob mit dem Verzeichnis mit [] im Namen
  • Python Glob ohne den ganzen Pfad - nur den Dateinamen
  • Warum kann python Glob meinen Daumen nicht erkennen (und was kann ich dagegen tun?)
  • Warum lecke ich das Gedächtnis mit dieser Pythonschleife?
  • Löschen von NaN-Zeilen, bestimmte Spalten in bestimmten Excel-Dateien mit Glob / Merge
  • Ändern der Dateierweiterung in Python
  • Python os.rename "" kann keine Datei erstellen, wenn diese Datei bereits existiert
  • Python: Wie man Duplikate in einer Liste findet und diese doppelten Gegenstände aktualisieren, indem sie sie mit einem progressiven Brief umbenannt werden
  • Umbenennen von mehreren Dateien auf der Grundlage von Dokument Text String
  • Konvertieren Sie die Zeile in die Spaltenüberschrift für Pandas DataFrame,
  • Einfachste Weg, um ein Modell mit Django / South umzubenennen?
  • 3 Solutions collect form web for “Datei-Liste mit Glob in Python”

    Sieht aus wie Sie müssen nur Ihre Schrägstrich, um in das richtige Verzeichnis zu suchen.

     import glob mydir = "C:\Data" file_list = glob.glob(mydir + "/*.csv") # Include slash or it will search in the wrong directory!! print('file_list {}'.format(file_list)) 

    Versuche fnmatch :

     import os from fnmatch import fnmatch mydir = "C:/Data" file_list = [file for file in os.listdir(mydir) if fnmatch(file, '*.csv')] print('file_list {}'.format(file_list)) 

    Verwenden Sie auch RegEx:

     import os import re mydir = "C:/Data" file_list = [file for file in os.listdir(mydir) if re.search('.*\.png', file)] print('file_list {}'.format(file_list)) 

    Übrigens, glob ist ein Modul, solltest du glob.glob() wie glob.glob() :

     from glob import glob mydir = "C:/Data" file_list = glob(mydir + "/*.csv") print('file_list {}'.format(file_list)) 

    Ihnen fehlt ein Backslash zwischen dem Dateinamen und dem Verzeichnis. ABER Sie können einen String nicht mit einem einzigen Backslash beenden, denn es wird denken, dass Sie versuchen, dem Endquote zu entkommen. Sie können es in den Anruf zu Glob stattdessen setzen. (Beachten Sie, dass Sie beide Strings roh machen wollen, es ist eine gute Praxis, falls Ihr Verzeichnis mit einem "n" oder einem "t" beginnt, das in diesem Fall als Abstandszeichen interpretiert wird.):

     import glob mydir = r"C:\Data" file_list = glob.glob(mydir + r"\*.csv") print('file_list {}'.format(file_list)) 

    Auch vielleicht möchten Sie mit pylint versuchen, um auf häufige Fehler oder Warnungen zu überprüfen. Es hätte eine Warnung für den ungedeckten Verzeichnisnamen geworfen.

    Aktualisieren:

    Tatsächlich würde ich es einfach vereinfachen:

     import glob file_list = glob.glob(r"C:\Data\*.csv") print('file_list {}'.format(file_list)) 
    Python ist die beste Programmiersprache der Welt.