¿Cómo puedo crear un archivo tmp en Python?

Tengo esta función que hace referencia a la ruta de un archivo:

some_obj.file_name(FILE_PATH) 

donde FILE_PATH es una cadena de la ruta de un archivo, es decir, H:/path/FILE_NAME.ext

Quiero crear un archivo FILE_NAME.ext dentro de mi script de python con el contenido de una cadena:

 some_string = 'this is some content' 

¿Como va esto? El script de Python se colocará dentro de una caja de Linux.

Hay un módulo tempfile para python, pero una simple creación de archivos también hace el truco:

 new_file = open("path/to/FILE_NAME.ext", "w") 

Ahora puedes escribir en él usando el método de write :

 new_file.write('this is some content') 

Con el módulo tempfile esto podría verse así:

 import tempfile new_file, filename = tempfile.mkstemp() print(filename) os.write(new_file, "this is some content") os.close(new_file) 

Con mkstemp usted es responsable de eliminar el archivo una vez que haya terminado con él. Con otros argumentos, puede influir en el directorio y el nombre del archivo.


ACTUALIZAR

Como bien señala Emmet Speer , existen consideraciones de seguridad al usar mkstemp , ya que el código del cliente es responsable de cerrar / limpiar el archivo creado. Una mejor manera de manejarlo es el siguiente fragmento de código (tomado del enlace):

 import os import tempfile fd, path = tempfile.mkstemp() try: with os.fdopen(fd, 'w') as tmp: # do stuff with temp file tmp.write('stuff') finally: os.remove(path) 

El archivo os.fdopen envuelve el descriptor de archivo en un objeto de archivo de Python, que se cierra automáticamente cuando sale with . La llamada a os.remove borra el archivo cuando ya no es necesario.

Creo que estás buscando esto: http://docs.python.org/library/tempfile.html

 import tempfile with tempfile.NamedTemporaryFile() as tmp: print(tmp.name) tmp.write(...) 

Pero:

Si el nombre se puede usar para abrir el archivo por segunda vez, mientras que el archivo temporal nombrado todavía está abierto, varía según las plataformas (se puede usar en Unix; no se puede usar en Windows NT o posterior).

Si eso es una preocupación para ti:

 import os, tempfile tmp = tempfile.NamedTemporaryFile(delete=False) try: print(tmp.name) tmp.write(...) finally: os.unlink(tmp.name) tmp.close()