Drucken von Dateinamen

7

Ich bin sehr neu in python und habe gerade Eric6 installiert. Ich möchte einen Ordner (und alle Unterverzeichnisse) durchsuchen, um den Dateinamen einer Datei mit der Erweiterung .pdf zu drucken Syntax, aber es sagt falsch

  

Das Debugging-Programm hat die Exception unbehandelt FileNotFoundError
ausgelöst   "[WinError 3] Das System kann den angegebenen Pfad 'C:'"
nicht finden   Datei: C: \ Benutzer \ pcuser \ EricDocs \ Test.py, Zeile: 6

Und das ist die Syntax, die ich ausführen möchte:

%Vor%     
Michael Mormon 29.02.2016, 15:14
quelle

7 Antworten

9

Verwenden Sie das Modul glob .

  

Das glob-Modul findet alle Pfadnamen, die einem bestimmten Muster entsprechen

%Vor%

Dies funktioniert auf Windows- und * nix-Plattformen.

Stellen Sie nur sicher, dass Ihr Pfad unter Windows vollständig maskiert ist. Es könnte nützlich sein, eine rohe Zeichenfolge zu verwenden.

In Ihrem Fall wäre das:

%Vor%

Für nur eine Liste von Dateinamen (nicht vollständige Pfade, wie in Ihrem Kommentar) können Sie dieses Einzeiler tun:

%Vor%     
Inbar Rose 29.02.2016, 15:22
quelle
3

Im Moment suchen Sie jede Zeichenkette innerhalb der Variablen von testdir.

Es wird also der Ordner nach den Werten "C", ":", "\", "T" usw. durchsucht. Sie sollten auch Ihren Escape-Charakter wie "C: \ ... \ ... \ "

Sie sollten wahrscheinlich stattdessen os.listdir (testdir) verwenden.

    
mattsap 29.02.2016 15:19
quelle
2

Versuchen Sie, Ihr Python-Skript von C: auszuführen. Von der Eingabeaufforderung aus könnten Sie dies tun:

%Vor%

Wie von Tony Babarino erwähnt, verwenden Sie r"C:\Test" anstelle von "C:\Test" in Ihrem Code.

    
Sean Francis N. Ballais 29.02.2016 15:21
quelle
2

Es gibt ein paar Probleme in Ihrem Code, schauen Sie sich an, wie ich es unten geändert habe:

%Vor%

Beachten Sie, dass ich Ihren Pfadnamen nicht erkannt und Ihre erste if folder... entfernt habe. Das hat die Ordner nicht wie erwartet erhalten, sondern stattdessen ein Zeichen des Pfadstrings einzeln ausgewählt.

Sie müssen den Code ändern, damit er alle Ordner durchsucht. Dies ist derzeit nicht möglich. Sehen Sie sich das Modul glob an.

    
Gareth Webber 29.02.2016 15:15
quelle
2

Sie müssen den umgekehrten Schrägstrich unter Windows umgehen und Sie können os.walk verwenden, um alle PDF-Dateien zu erhalten.

%Vor%     
BChow 29.02.2016 15:24
quelle
2

Sie durchlaufen im Grunde die Zeichenfolge testdir mit der ersten for -Schleife, dann gibt jedes Zeichen an os.listdir(folder) keinen Sinn, entfernen Sie einfach die erste for -Schleife und verwenden Sie fnmatch Methode von fnmatch modul:

%Vor%     
Iron Fist 29.02.2016 15:31
quelle
1

Versuchen Sie testdir = r"C:\Test" anstelle von testdir = "C:\Test" . In Python müssen Sie Sonderzeichen wie zum Beispiel \ fliehen. Sie können ihnen auch mit dem Symbol '\' entkommen, also wäre es "C:\Test" . Indem Sie r"C:\Test" verwenden, weisen Sie Python an, die rohe Zeichenkette zu verwenden.

Auch for folder in testdir: line macht keinen Sinn, weil testdir eine Zeichenkette ist. Sie versuchen also im Grunde, über eine Zeichenkette zu iterieren.

    
Tony Babarino 29.02.2016 15:17
quelle

Tags und Links