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()
# ...