【发布时间】:2011-10-31 08:25:32
【问题描述】:
我在 Python 中打开了一个 8 MB 的文件,因为我想批量更改各种类型的文件名。我浏览并将文件加载到一个字符串中,并使用字符串方法替换来替换所有内容。然后我注意到只有一半的文件被替换了;好像 Python 没有完全打开文件一样。
我必须在 Python 的范围内播放某种字符串大小限制或最大文件大小限制吗?
参考Python search and replace not replacing properly中的代码。
我已更改为建议的代码。缓冲区是一个超过 150k 行的 8 MB HTML 文件。替换代码完美运行;只是它并没有取代一切。或者例如一个令人痛苦的错误是:
当我尝试将字符串 ff10 替换为 FF-10 时,它会更改为 FF-010。
【问题讨论】:
-
您可以打开任意大小的文件,但是当您读取整个文件时,可能会发生 MemoryOverflow,因为 32Bit 系统每个进程只能分配 2GB,或者您可能没有足够的内存。
-
显示给出问题的代码,这样您可以获得比简单地告诉您猜测是否正确的答案更有用的答案。 :)
-
你的代码有问题。 case x==1 总是首先匹配,所以你最终得到 FF-010。使用正确的字符串替换函数或阅读正则表达式和/或最长前缀匹配。
-
您使用的是 Windows 吗?您是否以二进制模式打开文件?如果没有,请尝试……