Cree archivos y directorios temporales usando Python-tempfile

Tempfile es un módulo de Python utilizado para trabajar con archivos temporales. Los archivos temporales pueden ser necesarios cuando necesitamos almacenar datos temporalmente durante la ejecución del programa o cuando estamos trabajando con una gran cantidad de datos. Estos archivos se crean con nombres únicos y se almacenan en una ubicación predeterminada que depende de la plataforma. Los archivos creados con tempfile se eliminan tan pronto como se cierran. 

Veamos cómo crear y editar estos archivos:

Creación de un archivo temporal

El archivo se crea utilizando la función TemporalFile() . De forma predeterminada, el archivo se abre en modo w+b , es decir, podemos leer y escribir en el archivo abierto. El modo binario se utiliza para que los archivos puedan trabajar con todo tipo de datos. Es posible que este archivo no tenga un nombre visible adecuado en el sistema de archivos.
 

Ejemplo:

Python3

import tempfile
  
temp = tempfile.TemporaryFile()
print(temp)
print(temp.name)

Producción:

<_io.BufferedRandom name=7>
7

La función devuelve un objeto similar a un archivo que se puede utilizar como área de almacenamiento temporal. El atributo de nombre se utiliza para obtener el nombre único y aleatorio del archivo. Tenga en cuenta que este no es un nombre de archivo visible real y no hay ninguna referencia a este archivo en el sistema de archivos.

Creación de un archivo temporal con nombre

La función NamedTemporaryFile() crea un archivo de la misma manera que TemporaryFile() pero con un nombre visible en el sistema de archivos. Toma un parámetro de eliminación que podemos configurar como False para evitar que el archivo se elimine cuando se cierra.

 Ejemplo:

Python3

import tempfile
  
temp = tempfile.NamedTemporaryFile()

Python3

import tempfile
  
temp = tempfile.NamedTemporaryFile()
print(temp)
print(temp.name)

Producción:

<tempfile._TemporaryFileWrapper object at 0x7f77d332f6d8>
/tmp/tmprumbbjz4

Esto también devuelve un archivo como objeto como antes, la única diferencia es que el archivo en realidad tiene un nombre visible esta vez. 

Agregar sufijo y prefijo a un archivo temporal

Podemos elegir agregar sufijo o prefijo al nombre de un archivo temporal nombrado, especificando los parámetros ‘ sufijo ‘ y ‘ prefijo ‘. 
 

Python3

import tempfile
  
temp = tempfile.NamedTemporaryFile(prefix='pre_', suffix='_suf')
print(temp.name)

Producción:

/tmp/pre_ddur6hvr_suf

Leer y escribir en un archivo temporal

El método write() se usa para escribir en un archivo temporal. Toma la entrada como datos binarios por defecto. Podemos pasar la string a escribir como entrada, precedida de una ‘ b ‘ para convertirla en datos binarios. La función de escritura devuelve el número de caracteres escritos. Si abrimos el archivo en modo texto (w+t) , podemos usar el método writelines() en su lugar, que toma un parámetro de string. Después de escribir en el archivo, el puntero está al final del archivo. Entonces, antes de que podamos leer el contenido, se llama al método seek() para establecer el puntero del archivo al comienzo del archivo. seek() toma como argumento el índice del carácter ante el cual queremos colocar el puntero. La lectura()La función se utiliza entonces para leer el contenido.

Ejemplo:

Python3

import tempfile
  
temp = tempfile.TemporaryFile()
temp.write(b'foo bar')
temp.seek(0)
print(temp.read())
  
temp.close()

Producción :

b'foo bar'

Creación de un directorio temporal

Al igual que crear archivos, también podemos crear un directorio temporal para almacenar nuestros archivos temporales. La función TemporaryDirectory() se utiliza para crear el directorio. Una vez que hayamos terminado de trabajar con los archivos temporales, el directorio debe eliminarse manualmente usando os.removedirs()
 

Python3

import tempfile
import os
   
temp_dir = tempfile.TemporaryDirectory()
print(temp_dir)

Producción:

<TemporaryDirectory '/tmp/tmpgjl5ki_5'>

Directorio y archivo temporal seguro

Podemos crear un archivo temporal de forma segura usando mkstemp() . El archivo creado por este método solo puede leerlo y escribirlo el usuario que lo crea. Podemos agregar parámetros de prefijo y sufijo como en NamedTemporaryFile() . El modo predeterminado es binario, pero podemos abrirlo en modo de texto configurando el parámetro ‘ texto ‘ como True . Este archivo no se elimina cuando se cierra. 
 Ejemplo:

Python3

import tempfile
  
   
secure_temp = tempfile.mkstemp(prefix="pre_",suffix="_suf")
print(secure_temp)

Producción: 

(71, '/tmp/pre_i5us4u9j_suf')

De manera similar, podemos crear un directorio temporal seguro usando el método mkdtemp() .

Ejemplo:

Python3

import tempfile
   
secure_temp_dir = tempfile.mkdtemp(prefix="pre_",suffix="_suf")
print(secure_temp_dir)

Producción:

/tmp/pre_9xmtwh4u_suf

Ubicación de Archivos Temporales

Podemos establecer la ubicación donde se almacenan los archivos configurando el atributo tempdir . La ubicación se puede buscar usando el método gettempdir() . Cuando creamos un archivo o directorio temporal, Python busca en una lista estándar de directorios para encontrar uno en el que el usuario que llama pueda crear archivos. 

La lista en orden de preferencia es:

  1. El directorio nombrado por la variable de entorno TMPDIR .
  2. El directorio nombrado por la variable de entorno TEMP .
  3. El directorio nombrado por la variable de entorno TMP .
  4. Un directorio específico de la plataforma:
    • En Windows, los directorios C:\TEMP , C:\TMP , \TEMP y \TMP , en ese orden.
    • En todas las demás plataformas, los directorios /tmp , /var/tmp y /usr/tmp , en ese orden.
  5. El directorio de trabajo actual.

Ejemplo:

Python3

import tempfile
  
tempfile.tempdir = "/temp"
print(tempfile.gettempdir())

Producción:

/temp

Publicación traducida automáticamente

Artículo escrito por cosine1509 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *