ftp read()python中的内存错误

时间:2011-05-19 05:07:23

标签: python ftp ftplib

打开时出现“内存错误”错误并读取大于500mb的文件。 如果它小于500mb它完美地工作.. 即时通讯使用我的进度条的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)

2 个答案:

答案 0 :(得分:1)

因此,文件in.read()实际上读取(即下载)文件并消耗你的记忆 您可以改为使用

self.size = self.ftp.size(self.filename)

答案 1 :(得分:0)

不要使用read()方法,因为它将整个文件读入字符串。您应该使用os.stat()函数来获取文件元数据,该元数据返回包含成员st_size的统计结构。这是文件的大小(以字节为单位)。您不必先阅读所有内容。

用于发送,也可以在循环中以块(例如16kB)读入和写出。