lola
Hola: Estoy tratando de usar el Pandas
DataFrame.to_csv
método para guardar un dataframe
a un csv
expediente:
filename="./dir/name.csv"
df.to_csv(filename)
Sin embargo, recibo el error:
IOError: [Errno 2] No such file or directory: './dir/name.csv'
¿No debería el to_csv
método puede crear el archivo si no existe? Esto es lo que pretendo que haga.
to_csv
crea el archivo si no existe como dijiste, pero no crea directorios que no existen. Asegúrese de que el subdirectorio en el que está intentando guardar su archivo se haya creado primero.
A menudo hago algo como esto en mi trabajo:
import os
outname="name.csv"
outdir="./dir"
if not os.path.exists(outdir):
os.mkdir(outdir)
fullname = os.path.join(outdir, outname)
df.to_csv(fullname)
Esto se puede envolver fácilmente en una función si necesita hacer esto con frecuencia.
-
os.mkdir
crea solo un directorio inmediato. Si hay varios niveles de directorios en la ruta que no existen, useos.makedirs
. Sin embargo, tenga en cuenta que arroja unOSError
si la hoja existe– mz8i
24 de agosto de 2018 a las 9:13
-
@mz8i Si un directorio hoja existente es aceptable,
os.makedirs
se puede llamar conexist_ok=True
para evitar el error.– stiaan
30 de marzo de 2020 a las 15:05
Tim
Aquí hay una forma alternativa de hacer esto usando la excelente biblioteca estándar pathlib
módulo, que generalmente hace las cosas más ordenadas.
Como se explica en otra parte, to_csv
creará el expediente si no existe, pero no cree directorios inexistentes en la ruta al archivo, por lo que primero debe asegurarse de que existan.
from pathlib import Path
output_file="my_file.csv"
output_dir = Path('long_path/to/my_dir')
output_dir.mkdir(parents=True, exist_ok=True)
df.to_csv(output_dir / output_file) # can join path elements with / operator
Ajuste parents=True
también creará los directorios principales necesarios, y exist_ok=True
significa que no generará un error si el directorio ya existe, por lo que no tiene que verificarlo explícitamente por separado.
-
Esto era lo que se quería, también pensé en crear directorios recursivamente usando la implementación anterior. Pero esto es mejor y mucho más simple.
– Janith
15 de febrero de 2019 a las 5:56
-
pathlib
es un sueño! 😀– Tim
15 de febrero de 2019 a las 21:35
-
@JKK Puedes hacer exactamente lo mismo con
os.makedirs('long_path/to/my_dir', exist_ok=True)
– Tiene exactamente el mismo comportamiento. Sin embargo, no hay nada malo con el orientado a objetos.pathlib
acércate si esa es tu taza de té!– qRTPCR
29 mayo 2019 a las 20:52
-
Si soy completamente honesto, esto fue en parte solo una oportunidad para presentarle a la gente
pathlib
😜 … y sí, hablando como británico, ¡es mi taza de té! 😂👌☕– Tim
1 de junio de 2019 a las 16:12
-
Esta debería ser la respuesta aceptada. Una solución mucho más limpia y segura.
– Vacaciones crujientes
8 de noviembre de 2021 a las 15:23
Tuve este error cuando agregué accidentalmente file://
al comienzo de la ruta de guardado. Dado que la búsqueda me trajo aquí, también podría ser útil para alguien.
-
¡Tonto!
pd.read_csv
no tiene problemas con elfile://
prefijo pero por alguna razónto_csv
lo hace.– KLMiller
20 de septiembre de 2021 a las 5:55
Morteza
Para guardar el archivo ‘csv’ de jupyter en el escritorio:
df.to_csv(r'your directory\your file name.csv', index=False)
Por ejemplo:
df5.to_csv(r'C:\Users\Asus\Desktop\DataSets\compounds\inactive_compounds.csv', index=False)