Crear y guardar archivos en un nuevo directorio en Python

Negocio

Las siguientes secciones explican cómo crear y guardar un nuevo archivo en Python utilizando un nuevo directorio (carpeta) como destino.

  • Error al especificar un directorio inexistente con open()(FileNotFoundError)
  • os.makedirs()Crear un directorio
  • Código de ejemplo para crear un nuevo archivo con un destino

El siguiente es un ejemplo de archivo de texto.

Cuando se almacenan imágenes, depende de la biblioteca si se puede especificar una ruta que incluya un directorio inexistente (o si creará uno automáticamente si no existe).
FileNotFoundErrorSi se produce este error, puede crear un nuevo directorio con os.madeirs() antes de ejecutar la función para guardar, como en el siguiente ejemplo.

Error al especificar un directorio inexistente con open()(FileNotFoundError)

Cuando se crea un nuevo archivo con la función incorporada open(), se produce un error si se especifica como primer argumento una ruta que contiene un nuevo directorio (un directorio que no existe) como destino.(FileNotFoundError)

open('not_exist_dir/new_file.txt', 'w')
# FileNotFoundError

El primer argumento de open() puede ser una ruta absoluta o una ruta relativa al directorio actual.

Para el uso básico de open(), como crear un nuevo archivo en un directorio existente, o sobrescribir o añadir a un archivo existente, consulte el siguiente artículo.

Crear un directorio(os.makedirs())

Cuando se crea un nuevo archivo en un directorio inexistente, es necesario crear el directorio antes de open().

Si está utilizando Python 3.2 o posterior, es conveniente utilizar os.makedirs() con el argumento exist_ok=True. Incluso si el directorio de destino ya existe, no se producirá ningún error y se podrá crear el directorio de una vez.

import os

os.makedirs(new_dir_path, exist_ok=True)

Si tiene una versión antigua de Python y no tiene el argumento exist_ok en os.makedirs(), obtendrá un error si especifica la ruta a un directorio que existe, así que utilice os.path.exists() para comprobar primero la existencia del directorio.

if not os.path.exists(new_dir_path):
    os.makedirs(new_dir_path)

Consulte el siguiente artículo para más detalles.

Código de ejemplo para crear un nuevo archivo con un destino

El siguiente es un ejemplo de código de una función que crea y guarda un nuevo archivo especificando el directorio de destino.

El primer argumento dir_path es la ruta del directorio de destino, el segundo argumento filename es el nombre del nuevo archivo que se va a crear, y el tercer argumento file_content es el contenido que se va a escribir, cada uno especificado como una cadena.

Si el directorio especificado no existe, crea uno nuevo.

import os

def save_file_at_dir(dir_path, filename, file_content, mode='w'):
    os.makedirs(dir_path, exist_ok=True)
    with open(os.path.join(dir_path, filename), mode) as f:
        f.write(file_content)

Utilícelo de la siguiente manera.

save_file_at_dir('new_dir/sub_dir', 'new_file.txt', 'new text')

En este caso, el archivo nuevo_archivo.txt con el contenido «nuevo texto» se creará en nueva_dirección_subdirección. En otras palabras, se creará el siguiente archivo.new_dir/sub_dir/new_file.txt

Concatenar nombres de directorios y archivos con os.path.join().

Además, el modo de open() se especifica como argumento. Para los archivos de texto, el valor por defecto 'w' está bien, pero si quiere crear un archivo binario, establezca mode='wb'.

Copied title and URL