MemoryError Python,文件99999999中的字符串

时间:2017-08-27 11:35:10

标签: python memory

Windows 10 pro 64bit,python安装64位版本

  

文件重量为1,80 gb

如何修复此错误,并打印所有字符串

def count():
    reg = open('link_genrator.txt', 'r')
    s = reg.readline().split()
    print(s)

3 个答案:

答案 0 :(得分:0)

reg.read().split('\n')会列出所有行。

答案 1 :(得分:0)

为什么不做s = reg.read(65536).splitlines()?这将为您提供内容结构的提示,然后您可以使用您在大块中阅读的大小进行播放。 一旦你知道了一点,你可以尝试循环该行总和行数

答案 2 :(得分:0)

在查看答案并试图了解最初的问题后,我会得到比我之前的答案更完整的答案。 查看示例函数中的问题和代码,我现在假设如下:

  • 似乎他想将文件的内容分成单词并打印出来
  • 从函数名称我想他想计算所有这些单词
  • 整个文件非常大,因此Python因内存错误而停止

处理这些大文件显然要求采用与通常不同的处理方法。例如,我没有看到在控制台上打印这样一个文件的所有单独的单词有任何用处。当然,计算这些单词或在其中搜索模式可能是有意义的。

举一个例子来说明一个人如何处理我在下面的例子中写的大文件。它可以作为根据您自己的要求进一步改进和更改的起点。

.animate-if {
  background:white;
  border:1px solid black;
  padding:10px;
}

.animate-if.ng-enter, .animate-if.ng-leave {
  transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
}

.animate-if.ng-enter,
.animate-if.ng-leave.ng-leave-active {
  opacity:0;
}

.animate-if.ng-leave,
.animate-if.ng-enter.ng-enter-active {
  opacity:1;
}

该代码适用于最大2GB的文件(使用2.1GB测试)。开头的两个常量允许您使用块中读取的大小来播放并限制处理的文本量。在测试期间,您可以只处理整个数据的一个子集,速度更快。