我用Python打开了一个8 MB的文件,因为我想批量更改各种类型的文件名。我仔细检查并将文件加载到字符串中,然后使用字符串方法replace替换了所有内容。然后我注意到只有一半的文件被替换了。好像Python没有完全打开文件。
我必须在Python的范围内发挥某种字符串大小限制或最大文件大小限制吗?
我已更改为建议的代码。缓冲区是一个超过15万行的8 MB HTML文件。替换代码可以完美运行;只是它并不能替代一切。或者例如,一个令人痛苦的错误是:
当我尝试将字符串ff10替换为FF-10时,它将更改为FF-010。
不,Python可以打开的文件大小没有上限。8 MB在现代意义上来说 很小 。您在某处犯了一个错误。
人们经常将数 千兆字节 的数据加载到内存中。根据计算机的RAM(无论是64位还是32位操作系统和处理器),在您实际获得的最大容量可能为1 GB以上MemoryError。
MemoryError
作为测试,我只是将一个350 MB的文件加载到一个字符串中。只花了几秒钟。然后,我将其写回到文件中。那花了一点时间。然后,我对文件进行了哈希处理。两者是相同的。
在使用大型字符串之前,Python不会出现问题,直到达到RAM,操作系统或处理器的极限。
您说自己“遍历并将文件加载到字符串中” –听起来像是您可能会犯错误的第一个地方。要将文件加载到字符串中,只需执行fileobject.read()。如果您以其他方式执行此操作,则可能是问题所在。
fileobject.read()