2016-11-16 2 views
0

Ich benutze Python in Visual Studio, indem ich den Code im Debug-Modus durchtrete. Nachdem die erste if..continue-Anweisung überprüft wurde, kehrt die Steuerung wie erwartet zu for file.. zurück.Python "if ... continue" gibt die Steuerung unerwartet an die übergeordnete Schleife der aktuellen Schleife zurück

jedoch auf dem zweiten Durchlauf durch, wenn er fällt auf die nächsten if..continue Anweisung kehrt die Steuerung zu Beginn der Mutter for dir Schleife, wenn ich es for file.. wieder zurückzuerwartet. Ziel ist es, alle Unterverzeichnisse und CSV-Dateien mit Namen des Formulars zu ignorieren _*.csv (Ich hoffe, ich muss jetzt nicht zusätzliche Pattern-Matching-Sachen lernen - wenn möglich, um eine aktuelle kleine Aufgabe erledigt zu bekommen):

+0

Vielleicht hatte man bereits durch alle Dateien in diesem Verzeichnis geschleift? – Moberg

+0

@Moberg - Hallo, danke für die Antwort, aber, nein, ich habe überprüft und überprüft, dass ich in meinem Testordner suche, der absichtlich ein Unterverzeichnis enthält, ein gültiges 'csv', das geprüft werden soll und ein csv mit dem Namen '_testMe.csv'. Sagst du das von dem, was du sagen kannst, sollte es funktionieren, wie ich es erwartet habe? – Margarita

+0

add 'print "- {} -". Format (file) 'am Anfang der Schleife. Vielleicht fügt Ihr Betriebssystem einige Leerzeichen vor und nach dem Dateinamen hinzu. Wenn ja, können Sie versuchen, 'file = file.strip() ' – woockashek

Antwort

3

Von was ich verstehe - Sie haben eine Liste von Verzeichnissen in os.listdir und eine Liste von Dateien in jedem dieser Verzeichnisse.

Im Idealfall sollten Sie ein Verzeichnis in currentDir laden -> dieses Verzeichnis sollte durch jede der Dateien gehen.

Ich glaube, dass der Kontrollfluss betroffen ist, weil Sie allen Verzeichnissen dasselbe currentDir zuweisen.

Try this:

for dir in os.listdir(masterDirPath):  
    currentDir = masterDirPath + dir 

    # iterate through csv logs within current data folder, aggregating data 
    ##### indent this part of your code ##### 

    for file in os.listdir(currentDir): 
     path = os.path.join(currentDir, file) 

     if os.path.isdir(path): 
      # skip directories 
      continue 

     if file.startswith('_'): 
      # skip custom files 
      continue 

     if file.endswith(".csv"): 
      # open log file 
      . 
      . 
      . 
+0

Danke - ich denke, es war ein Einrückungsfehler - Ich habe Ihre Version kopiert und eingefügt und es scheint jetzt gut zu funktionieren. – Margarita

Verwandte Themen