FTP прочитайте () ошибка памяти в Python
Вопрос
Я получаю сообщение об ошибке «Ошибка памяти», когда она открывается и считывает файл больше 500 МБ. Если его менее 500 МБ это работает отлично. Я использую размер MaxValue размера для моей панели прогресса
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)
. Решение
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.
Другие советы
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)
Не связан с StackOverflow