【发布时间】:2011-01-15 10:37:17
【问题描述】:
对于以下 Python 代码:
fp = open('output.txt', 'wb')
# Very big file, writes a lot of lines, n is a very large number
for i in range(1, n):
fp.write('something' * n)
fp.close()
上面的写作过程可以持续30分钟以上。有时我会收到错误MemoryError。关闭前的文件内容是存储在内存中还是写入临时文件?如果它在一个临时文件中,它在 Linux 操作系统上的一般位置是什么?
编辑:
在 for 循环中添加 fp.write
【问题讨论】:
-
您实际上是在多次调用
fp.write,还是将它们全部收集在一个大字符串中并一次写出?后者效率相当低。 -
它在for循环中调用多次写入。
-
显示代码。如果你一行一行地写,应该没有问题。
-
'something' * n 将在每次迭代中构建,并且随着 n 的增加将变得相当大。您的 MemoryError 可能与此有关。
标签: python