Heim >Backend-Entwicklung >Python-Tutorial >Warum verursacht „os.listdir()' beim Öffnen von Dateien „FileNotFoundError' in Python?

Warum verursacht „os.listdir()' beim Öffnen von Dateien „FileNotFoundError' in Python?

DDD
DDDOriginal
2024-12-07 14:22:13599Durchsuche

Why Does `os.listdir()` Cause `FileNotFoundError` in Python When Opening Files?

Fehler „Datei nicht gefunden“ in Python bei Verwendung von os.listdir

Das Durchlaufen von Dateien in einem Verzeichnis mit os.listdir() kann einen Fehler auslösen FileNotFoundError, auch wenn die Datei vorhanden ist. Dieser Fehler tritt auf, weil os.listdir() nur den Dateinamen und nicht den vollständigen Pfad zurückgibt.

Beachten Sie den folgenden Code:

import os

path = r'E:/somedir'

for filename in os.listdir(path):
    f = open(filename, 'r')

Bei der Ausführung würde dieser Code einen FileNotFoundError für generieren Datei 'foo.txt', obwohl sie im angegebenen Verzeichnis vorhanden ist.

Das Problem liegt darin os.listdir() gibt nur den Teil des Dateinamens zurück, beispielsweise „foo.txt“. Die Funktion open() erfordert jedoch den vollständigen Pfad zur Datei, einschließlich des Verzeichnispfads, z. B. „E:/somedir/foo.txt“.

Um dieses Problem zu beheben, verwenden Sie os.path.join( ) kann verwendet werden, um den Verzeichnispfad dem Dateinamen voranzustellen:

path = r'E:/somedir'

for filename in os.listdir(path):
    with open(os.path.join(path, filename)) as f:
        # process the file

Der with-Block kann auch verwendet werden, um die Datei automatisch zu schließen.

Das obige ist der detaillierte Inhalt vonWarum verursacht „os.listdir()' beim Öffnen von Dateien „FileNotFoundError' in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn