python error-handling file-not-found

Python dando FileNotFoundError para el nombre de archivo devuelto por os.listdir



error-handling file-not-found (2)

Esto se debe a que os.listdir no devuelve la ruta completa al archivo, solo la parte del nombre de archivo; es ''foo.txt'' , cuando está abierto querría ''E:/somedir/foo.txt'' porque el archivo no existe en el directorio actual.

Use os.path.join para anteponer el directorio a su nombre de archivo:

path = r''E:/somedir'' for filename in os.listdir(path): with open(os.path.join(path, filename)) as f: ... # process the file

(Además, no está cerrando el archivo; el bloque with se encargará de él automáticamente).

Estaba tratando de iterar sobre los archivos en un directorio como este:

import os path = r''E:/somedir'' for filename in os.listdir(path): f = open(filename, ''r'') ... # process the file

Pero Python estaba lanzando FileNotFoundError a pesar de que el archivo existe:

Traceback (most recent call last): File "E:/ADMTM/TestT.py", line 6, in <module> f = open(filename, ''r'') FileNotFoundError: [Errno 2] No such file or directory: ''foo.txt''

Entonces, ¿qué está mal aquí?


os.listdir(directory) devuelve una lista de nombres de archivo en el directory . Entonces, a menos que el directory sea ​​su directorio de trabajo actual, debe unir esos nombres de archivo con el directorio real para obtener una ruta absoluta adecuada:

for filename in os.listdir(path): filepath = os.path.join(path, filename) f = open(filepath,''r'') raw = f.read() # ...