2011-08-20 32 views
9

我在Python中打开了一个8   MB文件,因为我想批量更改各种类型的文件名。我经过并将文件加载到一个字符串中,并使用字符串方法replace替换所有内容。然后我注意到只有一半的文件被替换;就好像Python没有完全打开文件一样。Python可以打开的文件的最大大小?

是否有某种字符串大小限制或最大文件大小限制,我必须在Python的范围内发挥?

请参阅Python search and replace not replacing properly中的代码。

我已更改为建议的代码。该缓冲区是一个超过150k行的8位HTML文件。替换代码完美地工作;只是它并没有取代所有的东西。或者,例如,一个令人痛苦的错误是:

当我试图将字符串ff10替换为FF-10时,它将更改为FF-010。

+5

您可以打开一个文件与任何尺寸,但是当你阅读整个文件,可发生MemoryOverflow为32位系统只能分配2GB的每个进程,或者你可能没有足够的内存。 –

+3

显示给你提供问题的代码,这样你就可以得到比仅仅告诉你你的猜测是否正确的答案更有用的答案。 :) –

+0

添加链接到我的代码 – nobody

回答

14

不,对Python可以打开的文件的大小没有可达的最大值。 8   MB is tiny现代条款。你在某个地方犯了一个错误。

定期将数据加载到内存中的人千兆字节。根据您计算机的RAM,无论是64位还是32位操作系统和处理器,实际的最大值可能在1   GB以上,然后再获得MemoryError

作为一项测试,我只是将一个35  MB文件加载到一个字符串中。这只需要几秒钟。然后我将它写回到一个文件中。花了一点时间。我然后散列文件。这两个是相同的。

Python没有大字符串的问题,直到达到RAM,操作系统或处理器的极限。

你说你“经历和加载的文件转换成字符串” - 听起来就像你可能已经犯了一个错误的首位。要将文件加载到字符串中,只需执行fileobject.read()。如果你以其他方式做了,那可能是问题所在。

+0

字符串呢? – nobody

+0

@没有人看到我对你的评论问题 –

+0

我做了一个测试,并将结果添加到我的答案中。 – agf

相关问题