我有一个需要在文本文件开头打印的标题行,然后下一行应该包含有关有多少行数据的信息。
最终输出文件应包含以下内容:
- 第一个之前的标题行
\n
- 文件的长度(即第二行之前的行数
\n
- 字符串的未知行
问题是如何在不知道有多少行字符串的情况下满足 (2) 内容?
我一直在这样做:
- 写标题行
" "
写一个 50 个字符的假行- 在保持#lines 计数器的同时写入未知的字符串行
- 寻找到标题行的末尾
- 在第二行写 #line 行,其余部分保持
" "
不变 - 关闭文件(想象一下它的字符串价值高达 19GB)
举个例子,我random.random()
用来生成行数,我一直这样做:
import random
fout = open('testoverwrite','w')
header = "%% this is a header line"
print>>fout, header
print>>fout, "".join((" ")*50)
total = 0
numrows = int(100*random.random())
for i in range(numrows):
j = int(100*random.random())
total+=j
print>>fout, j
fout.seek(len("%% this is a header line\n"))
#print len(str(numrows)+" "+str(total))
if len(str(numrows)+" "+str(total)) < 50:
fout.write(str(numrows)+" "+str(total))
fout.close()
有没有更好的方法来做到这一点?