Investigamos por todo internet y así traerte la solución para tu duda, si continúas con inquietudes déjanos un comentario y contestamos porque estamos para ayudarte.
Código fuente:Lib / tempfile.py
Este módulo crea directorios y archivos temporales. Funciona en todas las plataformas compatibles. TemporaryFile
, NamedTemporaryFile
, TemporaryDirectory
, y SpooledTemporaryFile
son interfaces de alto nivel que proporcionan limpieza automática y se pueden utilizar como administradores de contexto. mkstemp()
y mkdtemp()
son funciones de nivel inferior que requieren limpieza manual.
Todas las funciones y constructores que pueden ser invocados por el usuario toman argumentos adicionales que permiten un control directo sobre la ubicación y el nombre de los archivos y directorios temporales. Los nombres de los archivos utilizados por este módulo incluyen un string de caracteres aleatorios que permite que esos archivos se creen de forma segura en directorios temporales compartidos. Para mantener la compatibilidad con versiones anteriores, el orden de los argumentos es algo extraño; se recomienda utilizar argumentos de palabras clave para mayor claridad.
El módulo define los siguientes elementos invocables por el usuario:
tempfile.TemporaryFile(mode='w+b', buffering=-1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, *, errors=None)
-
Devolver un objeto similar a un archivo que se puede utilizar como área de almacenamiento temporal. El archivo se crea de forma segura, utilizando las mismas reglas que
mkstemp()
. Se destruirá tan pronto como se cierre (incluido un cierre implícito cuando el objeto se recolecte como basura). En Unix, la entrada de directorio para el archivo no se crea en absoluto o se elimina inmediatamente después de que se crea el archivo. Otras plataformas no admiten esto; su código no debe depender de un archivo temporal creado con esta función que tenga o no un nombre visible en el sistema de archivos.El objeto resultante se puede utilizar como administrador de contexto (ver Ejemplos de). Una vez finalizado el contexto o la destrucción del objeto de archivo, el archivo temporal se eliminará del sistema de archivos.
los modo el parámetro predeterminado es
'w+b'
para que el archivo creado se pueda leer y escribir sin ser cerrado. El modo binario se utiliza para que se comporte de forma coherente en todas las plataformas sin tener en cuenta los datos almacenados. búfer, codificacion, errores y nueva línea se interpretan como paraopen()
.los dir, prefix y sufijo Los parámetros tienen el mismo significado y valores predeterminados que con
mkstemp()
.El objeto devuelto es un true objeto de archivo en plataformas POSIX. En otras plataformas, es un objeto similar a un archivo cuyo
file
attribute es el subyacente true objeto de archivo.los
os.O_TMPFILE
La bandera se usa si está disponible y funciona (específico de Linux, requiere el kernel de Linux 3.11 o posterior).Plantea un evento de auditoría
tempfile.mkstemp
con argumentofullpath
.Modificado en la versión 3.5: los
os.O_TMPFILE
La bandera ahora se usa si está disponible.Modificado en la versión 3.8: Adicional errores parámetro.
tempfile.NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, delete=True, *, errors=None)
-
Esta función opera exactamente como
TemporaryFile()
lo hace, excepto que se garantiza que el archivo tiene un nombre visible en el sistema de archivos (en Unix, la entrada del directorio no está desvinculada). Ese nombre se puede recuperar delname
attribute del objeto similar a un archivo devuelto. Si el nombre se puede usar para abrir el archivo por segunda vez, mientras el archivo temporal nombrado aún está abierto, varía según las plataformas (se puede usar en Unix; no en Windows NT o posterior). Si Eliminar es true (predeterminado), el archivo se elimina tan pronto como se cierra. El objeto devuelto es siempre un objeto similar a un archivo cuyofile
attribute es el subyacente true objeto de archivo. Este objeto similar a un archivo se puede utilizar en unwith
declaración, como un archivo normal.Plantea un evento de auditoría
tempfile.mkstemp
con argumentofullpath
.Modificado en la versión 3.8: Adicional errores parámetro.
tempfile.SpooledTemporaryFile(max_size=0, mode='w+b', buffering=-1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, *, errors=None)
-
Esta función opera exactamente como
TemporaryFile()
lo hace, excepto que los datos se ponen en cola en la memoria hasta que el tamaño del archivo excede tamaño máximo, o hasta que el archivo estéfileno()
se llama al método, en cuyo punto el contenido se escribe en el disco y la operación procede como conTemporaryFile()
.El archivo resultante tiene un método adicional,
rollover()
, lo que hace que el archivo se transfiera a un archivo en el disco independientemente de su tamaño.El objeto devuelto es un objeto similar a un archivo cuyo
_file
attribute es unio.BytesIO
oio.TextIOWrapper
objeto (dependiendo de si es binario o de texto modo fue especificado) o un true objeto de archivo, dependiendo de sirollover()
ha sido llamado. Este objeto similar a un archivo se puede utilizar en unwith
declaración, como un archivo normal.Modificado en la versión 3.3: el método truncar ahora acepta un
size
argumento.Modificado en la versión 3.8: Adicional errores parámetro.
tempfile.TemporaryDirectory(suffix=None, prefix=None, dir=None)
-
Esta función crea de forma segura un directorio temporal utilizando las mismas reglas que
mkdtemp()
. El objeto resultante se puede utilizar como administrador de contexto (ver Ejemplos de). Una vez finalizado el contexto o la destrucción del objeto de directorio temporal, el directorio temporal recién creado y todo su contenido se eliminan del sistema de archivos.El nombre del directorio se puede recuperar del
name
attribute del objeto devuelto. Cuando el objeto devuelto se utiliza como administrador de contexto, elname
será asignado al objetivo delas
cláusula en elwith
declaración, si hay una.El directorio se puede limpiar explícitamente llamando al
cleanup()
método.Plantea un evento de auditoría
tempfile.mkdtemp
con argumentofullpath
.Nuevo en la versión 3.2.
tempfile.mkstemp(suffix=None, prefix=None, dir=None, text=False)
-
Crea un archivo temporal de la manera más segura posible. No hay condiciones de carrera en la creación del archivo, asumiendo que la plataforma implementa correctamente el
os.O_EXCL
bandera paraos.open()
. El archivo solo se puede leer y escribir mediante el ID de usuario que lo creó. Si la plataforma usa bits de permiso para indicar si un archivo es ejecutable, nadie lo puede ejecutar. Los procesos secundarios no heredan el descriptor de archivo.diferente a
TemporaryFile()
, el usuario demkstemp()
es responsable de eliminar el archivo temporal cuando haya terminado con él.Si sufijo no es
None
, el nombre del archivo terminará con ese sufijo, de lo contrario no habrá ningún sufijo.mkstemp()
no pone un punto entre el nombre del archivo y el sufijo; si lo necesita, póngalo al principio de sufijo.Si prefix no es
None
, el nombre del archivo comenzará con ese prefix; de lo contrario, un valor predeterminado prefix se utiliza. El valor predeterminado es el valor de retorno degettempprefix()
ogettempprefixb()
, según sea apropiado.Si dir no es
None
, el archivo se creará en ese directorio; de lo contrario, se utiliza un directorio predeterminado. El directorio predeterminado se elige de una lista dependiente de la plataforma, pero el usuario de la aplicación puede controlar la ubicación del directorio configurando el TMPDIR, TEMPERATURA o TMP Variables de entorno. Por lo tanto, no hay garantía de que el nombre de archivo generado tenga propiedades agradables, como no requerir comillas cuando se pasa a comandos externos a través deos.popen()
.Si alguno de sufijo, prefix, y dir no son
None
, deben ser del mismo tipo. Si son bytes, el nombre devuelto será bytes en lugar de str. Si desea forzar un valor de retorno de bytes con un comportamiento predeterminado, pasesuffix=b''
.Si texto se especifica y true, el archivo se abre en modo texto. De lo contrario, (por defecto) el archivo se abre en modo binario.
mkstemp()
devuelve una tupla que contiene un identificador de nivel de sistema operativo a un archivo abierto (como lo devolveríaos.open()
) y la ruta absoluta de ese archivo, en ese orden.Plantea un evento de auditoría
tempfile.mkstemp
con argumentofullpath
.Modificado en la versión 3.5: sufijo, prefix, y dir ahora se puede proporcionar en bytes para obtener un valor de retorno de bytes. Antes de esto, solo se permitía str. sufijo y prefix ahora acepta y por defecto a
None
para hacer que se utilice un valor predeterminado apropiado.Modificado en la versión 3.6: los dir el parámetro ahora acepta un objeto parecido a una ruta.
tempfile.mkdtemp(suffix=None, prefix=None, dir=None)
-
Crea un directorio temporal de la manera más segura posible. No hay condiciones de carrera en la creación del directorio. El directorio se puede leer, escribir y buscar solo mediante el ID de usuario que lo creó.
El usuario de
mkdtemp()
es responsable de eliminar el directorio temporal y su contenido cuando haya terminado con él.los prefix, sufijo, y dir los argumentos son los mismos que para
mkstemp()
.mkdtemp()
devuelve el nombre de ruta absoluto del nuevo directorio.Plantea un evento de auditoría
tempfile.mkdtemp
con argumentofullpath
.Modificado en la versión 3.5: sufijo, prefix, y dir ahora se puede proporcionar en bytes para obtener un valor de retorno de bytes. Antes de esto, solo se permitía str. sufijo y prefix ahora acepta y por defecto a
None
para hacer que se utilice un valor predeterminado apropiado.Modificado en la versión 3.6: los dir el parámetro ahora acepta un objeto parecido a una ruta.
tempfile.gettempdir()
-
Devuelve el nombre del directorio utilizado para los archivos temporales. Esto define el valor predeterminado para el dir argumento a todas las funciones de este módulo.
Python busca en una lista estándar de directorios para encontrar uno en el que el usuario que realiza la llamada pueda crear archivos. La lista es:
- El directorio nombrado por el
TMPDIR
Variable ambiental. - El directorio nombrado por el
TEMP
Variable ambiental. - El directorio nombrado por el
TMP
Variable ambiental. -
Una ubicación específica de la plataforma:
- En Windows, los directorios
C:TEMP
,C:TMP
,TEMP
, yTMP
, en ese orden. - En todas las demás plataformas, los directorios
/tmp
,/var/tmp
, y/usr/tmp
, en ese orden.
- En Windows, los directorios
- Como último recurso, el directorio de trabajo actual.
El resultado de esta búsqueda se almacena en caché, consulte la descripción de
tempdir
debajo. - El directorio nombrado por el
tempfile.gettempdirb()
-
Igual que
gettempdir()
pero el valor de retorno está en bytes.Nuevo en la versión 3.5.
tempfile.gettempprefix()
-
Devuelve el nombre del archivo prefix utilizado para crear archivos temporales. No contiene el componente de directorio.
tempfile.gettempprefixb()
-
Igual que
gettempprefix()
pero el valor de retorno está en bytes.Nuevo en la versión 3.5.
El módulo utiliza una variable global para almacenar el nombre del directorio utilizado para los archivos temporales devueltos por gettempdir()
. Se puede configurar directamente para anular el proceso de selección, pero no se recomienda. Todas las funciones de este módulo toman un dir argumento que se puede utilizar para especificar el directorio y este es el enfoque recomendado.
tempfile.tempdir
-
Cuando se establece en un valor diferente a
None
, esta variable define el valor predeterminado para el dir argumento a las funciones definidas en este módulo.Si
tempdir
esNone
(el predeterminado) en cualquier llamada a cualquiera de las funciones anteriores exceptogettempprefix()
se inicializa siguiendo el algoritmo descrito engettempdir()
.
Ejemplos de
A continuación se muestran algunos ejemplos de uso típico de la tempfile
módulo:
>>>import tempfile # create a temporary file and write some data to it>>> fp = tempfile.TemporaryFile()>>> fp.write(b'Hello world!')# read data from file>>> fp.seek(0)>>> fp.read()b'Hello world!'# close the file, it will be removed>>> fp.close()# create a temporary file using a context manager>>>with tempfile.TemporaryFile()as fp:... fp.write(b'Hello world!')... fp.seek(0)... fp.read()b'Hello world!'>>># file is now closed and removed# create a temporary directory using the context manager>>>with tempfile.TemporaryDirectory()as tmpdirname:...print('created temporary directory', tmpdirname)>>># directory and contents have been removed
Funciones y variables obsoletas
Una forma histórica de crear archivos temporales era generar primero un nombre de archivo con la mktemp()
función y luego cree un archivo con este nombre. Desafortunadamente, esto no es seguro, porque un proceso diferente puede crear un archivo con este nombre en el tiempo entre la llamada a mktemp()
y el intento posterior de crear el archivo mediante el primer proceso. La solución es combinar los dos pasos y crear el archivo inmediatamente. Este enfoque es utilizado por mkstemp()
y las otras funciones descritas anteriormente.
tempfile.mktemp(suffix='', prefix='tmp', dir=None)
-
En desuso desde la versión 2.3: Usar
mkstemp()
en lugar de.Devuelve un nombre de ruta absoluto de un archivo que no existía en el momento en que se realiza la llamada. los prefix, sufijo, y dir Los argumentos son similares a los de
mkstemp()
, excepto que bytes nombres de archivo,suffix=None
yprefix=None
no son compatibles.Advertencia
El uso de esta función puede introducir un agujero de seguridad en su programa. Para cuando empieces a hacer algo con el nombre de archivo que devuelve, es posible que alguien más te haya adelantado.
mktemp()
el uso se puede reemplazar fácilmente conNamedTemporaryFile()
, pasándole eldelete=False
parámetro:>>> f = NamedTemporaryFile(delete=False)>>> f.name '/tmp/tmptjujjt'>>> f.write(b"Hello World!n")13>>> f.close()>>> os.unlink(f.name)>>> os.path.exists(f.name)False
Valoraciones y reseñas
Eres capaz de añadir valor a nuestro contenido informacional añadiendo tu experiencia en las interpretaciones.