Maison > développement back-end > Tutoriel Python > Pourquoi `os.listdir()` provoque-t-il `FileNotFoundError` en Python lors de l'ouverture de fichiers ?

Pourquoi `os.listdir()` provoque-t-il `FileNotFoundError` en Python lors de l'ouverture de fichiers ?

DDD
Libérer: 2024-12-07 14:22:13
original
556 Les gens l'ont consulté

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

Erreur de fichier introuvable dans Python lors de l'utilisation de os.listdir

L'itération sur les fichiers d'un répertoire à l'aide de os.listdir() peut déclencher un FileNotFoundError, même lorsque le fichier existe. Cette erreur se produit car os.listdir() renvoie uniquement le nom du fichier, pas le chemin complet.

Considérez le code suivant :

import os

path = r'E:/somedir'

for filename in os.listdir(path):
    f = open(filename, 'r')
Copier après la connexion

Une fois exécuté, ce code générerait une FileNotFoundError pour le fichier 'foo.txt', même s'il existe dans le répertoire spécifié.

Le problème réside dans le fait que os.listdir() renvoie uniquement la partie du nom de fichier, telle que « foo.txt ». Cependant, la fonction open() nécessite le chemin complet du fichier, y compris le chemin du répertoire, tel que 'E:/somedir/foo.txt'.

Pour résoudre ce problème, os.path.join( ) peut être utilisé pour ajouter le chemin du répertoire au nom du fichier :

path = r'E:/somedir'

for filename in os.listdir(path):
    with open(os.path.join(path, filename)) as f:
        # process the file
Copier après la connexion

Le bloc with peut également être utilisé pour fermer automatiquement le fichier.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal