Drucken Von Dateinamen
Ich bin ganz neu python
und einfach installiert Eric6
ich bin wollen Suche einen Ordner (sowie alle sub-dirs) zu drucken, die den Dateinamen eine Datei mit der Dateierweiterung der .pdf
ich habe dies als meine syntax, aber es Fehler sagen
Dem testende Programm die Ausnahme ausgelöst unbehandelte FileNotFoundError
"[WinError 3] Das system kann den Pfad nicht finden angegeben " C:"."
Datei: C:\Users\pcuser\EricDocs\Test.py Zeile: 6
- Und dies ist die syntax, die ich ausführen möchten:
import os
results = []
testdir = "C:\Test"
for folder in testdir:
for f in os.listdir(folder):
if f.endswith('.pdf'):
results.append(f)
print (results)
- Ist "C:\Test" Ihre eigentliche Verzeichnis-Namen, oder sind Sie Anonymisierende es, weil die Reale Verzeichnis "C:\users\your_real_name" oder was?
- Warum
for folder in testdir
??? .. Sie Durchlaufentesdir
string, anstatt nicht jeden Ordner intestdir
- das ist das eigentliche Verzeichnis ich bin zu wollen, um zu Scannen. Erstellt habe ich eine "Test" - Verzeichnis und platziert ein paar diff-Datei-Typen in ihm zur Ausführung dieses snippet auf.
- Ich bin benötigen ein rekursiver Suche, und einmal schob Produktionsumgebung das Verzeichnis/kann nicht enthalten Unterverzeichnisse.
- Im Zusammenhang Liste Verständnis, wenn bedingt um Liste von Dateien eines bestimmten Typs
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die
glob
Modul.Dieser funktioniert auf Windows-und *nix-Plattformen.
Nur stellen Sie sicher, dass Ihr Pfad ist vollständig entgangen, die auf windows, könnte sein nützlich, um ein raw-string.
In deinem Fall wäre:
Nur für eine Liste von Dateinamen (nicht vollständige Pfade, wie pro Ihren Kommentar), können Sie dies tun one-liner:
Gerade jetzt, Sie suchen jede Zeichenkette innerhalb von testdir ist variabel.
also ist es die Suche die Ordner für die Werte "C", ":", "\", "T" etc. Sie wollen auch Ihre Flucht escape-Zeichen wie z.B. "C:\...\...\"
Du wohl, war der Einsatz von os.listdir(testdir) statt.
Versuchen Sie Ihre Python-Skript aus
C:
. Von der Eingabeaufforderung, die Sie vielleicht wollen, dies zu tun:Wie bereits von Tony Babarino, verwenden Sie
r"C:\Test"
statt"C:\Test"
im code.Gibt es ein paar Probleme im code, werfen Sie einen Blick auf wie die ich modifiziert habe es unter:
Beachten Sie, dass ich entkommen Ihr-Pfad-Namen, und entfernt Ihre erste
if folder...
. Das war nicht immer die Ordner, wie Sie es erwartet haben, sondern wählen Sie einen Charakter der Pfad-string ein zu einer Zeit.Müssen Sie den code ändern, um es zu bekommen, sich durch alle Ordner, dies derzeit nicht. Werfen Sie einen Blick auf die glob Modul.
Müssen Sie die Flucht der backslash unter windows und können Sie mit os.Fuß aus, um alle pdf-Dateien.
Sind Sie im Grunde Durchlaufen die Zeichenfolge
testdir
mit dem erstenfor
Schleife dann die übergabe jeder Charakteros.listdir(folder)
macht keinen Sinn, dann, entfernen Sie einfach das erstefor
Schleife und verwenden Sie diefnmatch
Methode vonfnmatch
Modul:Versuchen
testdir = r"C:\Test"
statttestdir = "C:\Test"
. In python Sie haben bestimmte Zeichen, wie zum Beispiel\
. Sie können entkommen und Ihnen auch mit symbol '\' so wäre es"C:\\Test"
. Durch die Verwendungr"C:\Test"
sagen Sie python verwenden raw string.Auch
for folder in testdir:
Linie ist nicht sinnvoll, weiltestdir
ist ein string, also Sie sind im Grunde versucht, zu iterieren über einen string.for folder in testdir:
Linie und es wird funktionieren