Así que estoy intentando abrir varios archivos dentro de la carpeta "carpeta de subred". Sin embargo, no me permite abrir un archivo específico que contiene espacios en él
for filename in os.listdir(pathlib.Path.cwd() / "Subnet folder"):
f = open(filename, 'r', encoding="ISO-8859-1")
Este es el error que recibo:
FileNotFoundError: [Errno 2] No such file or directory: '10.181.136.0 24.csv'
El archivo definitivamente está allí, así que no estoy seguro de cuál es el problema.
Cualquier ayuda es apreciada. Gracias
3 respuestas
Los espacios no son el problema aquí; son caminos relativos.
os.listdir
produce solo los nombres de los archivos, no una ruta relativa a su directorio de trabajo actual. Si desea abrir el archivo, debe usar la ruta relativa.
d = pathlib.Path.cwd() / "Subnet folder"
for filename in os.listdir(d):
f = open(d / filename, 'r', encoding="ISO-8859-1")
Tenga en cuenta que en realidad no necesita usar cwd
aquí, ya que tanto listdir
como open
ya interpretan las rutas relativas en su directorio de trabajo actual.
for filename in os.listdir("Subnet folder"):
f = open(os.path.join("Subnet folder", filename), ...)
O cambie primero su directorio de trabajo. Luego, el nombre del archivo será una ruta relativa válida para open
.
os.chdir("Subnet folder)
for filename in os.listdir():
f = open(filename, ...)
Finalmente, puede evitar os.listdir
por completo, porque si el objeto Path
se refiere a un directorio, puede iterar sobre su contenido directamente. Esta iteración produce una serie de instancias Path
, cada una de las cuales tiene un método open
que se puede usar en lugar de la función ordinaria open
.
for filename in (pathlib.Path.cwd() / "Subnet Folder").iterdir():
f = filename.open(...)
Parece que necesita agregar Subnet Folder
delante del nombre del archivo. Puedes usar os
import os
for filename in os.listdir(pathlib.Path.cwd() / "Subnet folder"):
f = open(os.path.join("Subnet folder", filename), 'r', encoding="ISO-8859-1")
El filename
termina siendo relativo a su CWD, por lo que desea hacer algo como
folder = pathlib.Path.cwd() / "Subnet folder"
for filename in os.listdir(folder):
f = open(folder / filename, 'r', encoding="ISO-8859-1")
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.