2012-05-07 3 views
6

Soy capaz de crear y escribir en un archivo temporal, sin embargo, al leer las líneas del archivo están vacías. Confirmé que el archivo temporal tiene contenido. Aquí está mi código. Graciastemp.readline() vacío?

import tempfile 
temp = tempfile.NamedTemporaryFile() 

with open("~/somefile.txt") as inf: 
    for line in inf: 
     if line==line.lstrip(): 
      temp.write(line) 

line = str(temp.readline()).strip() 
print line #nothing 

Respuesta

15

Tienes que volver a abrir (o retroceder) el archivo temporal antes de poder leer de él:

import tempfile 
temp = tempfile.NamedTemporaryFile() 

with open("~/somefile.txt") as inf: 
    for line in inf: 
     if line==line.lstrip(): 
      temp.write(line) 

temp.seek(0) # <=============== ADDED 

line = str(temp.readline()).strip() 
print line 

De lo contrario, el puntero de archivo se coloca en el extremo del archivo cuando se llame al temp.readline().

+0

¿Cómo es que no veo "buscar" en los documentos? 10.6. Tempfile - Generar archivos y directorios temporales "Está funcionando y gracias. – fpena06

+6

@ fpena06: 'NamedTemporaryFile()' devuelve "un objeto similar a un archivo". Los documentos para objetos de archivo están aquí: http://docs.python.org/library/stdtypes.html#file-objects – NPE