创建一个计算文本文件行中字数的程序(Python)

2024-03-29 02:20:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个程序,它接收一个输入文件,计算每行中的字数,并在另一个输出文件中写入一个特定数字的字符串。我成功地开发了以下代码:

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(所有数字都四舍五入,右)。 我尝试创建另一个程序,将每行拆分为一个列表,然后计算其长度,但问题仍然是一样的。 你知道这是什么原因吗?你知道吗


Tags: 文件字符串代码in程序txtinputline
1条回答
网友
1楼 · 发布于 2024-03-29 02:20:38

你需要在处理完每个文件后关闭它。最安全的方法是使用with语句:

with open(in_file) as f, open(out_file,"w") as g:
    for line in f:
        if line == "\n":
            g.write("0\n")
        else:
            g.write(str(line.count(" ")+1)+"\n")

当到达with块的末尾时,在with行中打开的所有文件都将关闭。你知道吗

您看到这种行为的原因是,出于性能原因,对文件的读写是缓冲的。由于硬盘驱动器的构造方式,数据是以块而不是以单个字节进行读/写的,因此即使您尝试读/写单个字节,也必须读/写整个块。因此,大多数编程语言的内置文件IO函数实际上一次读取(至少)一个块到内存中,并从该内存块向您提供数据,直到它需要读取另一个块为止。类似地,写入是通过首先实际写入内存块来执行的,并且仅当内存块已满时才将其写入磁盘。如果不关闭文件写入程序,则不会写入内存中最后一个块中的内容。你知道吗

相关问题 更多 >