我遇到了一个问题,似乎在StackOverflow上也没有人遇到过或者谷歌搜索过。
我的主要目标是能够将文件中的一个字符串替换为另一个字符串。是否有一种方法可以访问文件中的所有行。
问题是当我尝试读取一个大文本文件(1-2 GB)时,Python只会读取其中的子集。
例如,我将执行一个非常简单的命令,例如:
newfile = open("newfile.txt","w")
f = open("filename.txt","r")
for line in f:
replaced = line.replace("string1", "string2")
newfile.write(replaced)
它只写入原始文件的前382 MB。 之前有人遇到过这个问题吗?
我尝试了一些不同的解决方案,例如使用:
import fileinput
for i, line in enumerate(fileinput.input("filename.txt", inplace=1)
sys.stdout.write(line.replace("string1", "string2")
但它具有相同的效果。 读取文件时使用分块也不会有影响,例如使用
f.read(10000)
我已经缩小问题范围,很可能是读取问题而不是写入问题,因为它发生在简单打印出行的情况下。我知道还有更多的行。当我在像Vim这样的全文编辑器中打开它时,我可以看到应该是最后一行,但它并不是Python打印的最后一行。
有人能提供任何建议或尝试的方法吗?
我目前正在使用32位版本的Windows XP,拥有3.25GB的RAM,并运行Python 2.7。