Pregunta

Recibo un error 'error de memoria' cuando se abre y lee un archivo de más de 500 MB. Si es menos de 500 MB funciona perfectamente .. Estoy usando el tamaño para My MAXVALUE MAXVALUE de mi barra de progreso

    self.ftp = FTP(hostname)
    self.ftp.login(user, password)
    self.f = open(self.filename,'rb')

    with open(self.filename,'rb') as filein:
        self.size = filein.read()

    self.size = len(self.size)

¿Fue útil?

Solución

Don't use the read() method since it reads the whole file into a string. You should use the os.stat() function to get the the file metadata, which returns a stat structure with the member st_size. That's the size in bytes of the file. You don't have to read it all in first.

For sending, also read in and write out in chunks (say 16kB), in a loop.

Otros consejos

So, filein.read() actually reads (i.e. downloads) the file and is consuming your memory.
You can instead use

self.size = self.ftp.size(self.filename)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top