我正在尝试创建一个程序,它接收一个输入文件,计算每行中的字数,并在另一个输出文件中写入一个特定数字的字符串。我成功地开发了以下代码:
in_file = "our_input.txt"
out_file = "output.txt"
f=open(in_file)
g=open(out_file,"w")
for line in f:
if line == "\n":
g.write("0\n")
else:
g.write(str(line.count(" ")+1)+"\n")
现在,这很好,但问题是它只适用于一定数量的行。如果我的输入文件有8000行,它将只显示前6800行。如果有6000,则会显示than(所有数字都四舍五入,右)。 我尝试创建另一个程序,将每行拆分为一个列表,然后计算其长度,但问题仍然是一样的。 你知道这是什么原因吗?你知道吗
你需要在处理完每个文件后关闭它。最安全的方法是使用
with
语句:当到达
with
块的末尾时,在with
行中打开的所有文件都将关闭。你知道吗您看到这种行为的原因是,出于性能原因,对文件的读写是缓冲的。由于硬盘驱动器的构造方式,数据是以块而不是以单个字节进行读/写的,因此即使您尝试读/写单个字节,也必须读/写整个块。因此,大多数编程语言的内置文件IO函数实际上一次读取(至少)一个块到内存中,并从该内存块向您提供数据,直到它需要读取另一个块为止。类似地,写入是通过首先实际写入内存块来执行的,并且仅当内存块已满时才将其写入磁盘。如果不关闭文件写入程序,则不会写入内存中最后一个块中的内容。你知道吗
相关问题 更多 >
编程相关推荐