我用Python打开了一个8 MB的文件,因为我想批量更改各种类型的文件名。我遍历并将该文件加载到一个字符串中,并使用字符串方法replace替换所有内容。然后我注意到只有一半的文件被替换;就好像Python没有完全打开文件一样。
是否有某种字符串大小限制或最大文件大小限制,我必须在Python的范围内播放?
请参考Python search and replace not replacing properly中的代码。
我已更改为建议的代码。缓冲区是一个8 MB的HTML文件,超过150k行。替换代码可以完美地工作;只是它不能替换所有内容。或者举个例子,一个令人痛苦的错误是:
当我尝试将字符串ff10替换为FF-10时,它将被更改为FF-010。
发布于 2011-08-21 04:08:08
不,对Python可以打开的文件大小没有可达的最大值。8兆字节在现代术语中是很小的。你在什么地方搞错了。
人们定期将千兆字节的数据加载到内存中。根据你计算机的内存,无论是64位还是32位操作系统和处理器,在你得到MemoryError之前,实际的最大内存可能在1 GB以上。
作为测试,我刚刚将一个350兆字节的文件加载到字符串中。这只花了几秒钟。然后我把它写回一个文件。这花了一点时间。然后我对文件进行了哈希处理。这两个是相同的。
在达到RAM、操作系统或处理器的极限之前,Python对大型字符串没有任何问题。
您说您“检查并将文件加载到一个字符串中”--这听起来像是您可能犯的第一个错误。要将文件加载到字符串中,只需执行fileobject.read()。如果你用其他方式来做,那可能就是问题所在。
https://stackoverflow.com/questions/7134338
复制相似问题