python从文件读取并写入其他文件

python从文件读取并写入其他文件,python,Python,我试图在文件中每一行的开头添加一个数字,并将这一行逐行附加到一个新文件中。原始文件中有1189行文本,尽管进行了多次尝试,我在新文件中只得到1168行。发生什么事了 我添加了一个print语句(print str(counter)+“+”+行),原始文件中的所有行都会打印出来,旁边都是预期的数字。循环运行后,计数器变量为1190 编辑: 插入file2.close()循环工作后,所有1189行现在都在第二个文件中,但为什么?是否关闭正在写入的文件,即在循环后执行file2.close()?您的f

我试图在文件中每一行的开头添加一个数字,并将这一行逐行附加到一个新文件中。原始文件中有1189行文本,尽管进行了多次尝试,我在新文件中只得到1168行。发生什么事了

我添加了一个print语句(print str(counter)+“+”+行),原始文件中的所有行都会打印出来,旁边都是预期的数字。循环运行后,计数器变量为1190

编辑:
插入file2.close()循环工作后,所有1189行现在都在第二个文件中,但为什么?

是否关闭正在写入的文件,即在循环后执行
file2.close()

您的
file1
file2
指向您给出的代码示例中的同一个文件。

是的,我复制并粘贴了路径,但是我肯定在使用不同的文件不,我不,如果缺少21行,那怎么会有影响呢?尝试关闭文件,以便刷新所有文件缓冲区。为什么?你必须关闭这些文件,事情就是这样。关闭文件时,表示您已完成工作,因此操作系统可以将所有更改“提交”到磁盘。从另一个角度考虑,如果没有“close”语句,您的程序将不得不在每次写入内容时写入磁盘,这显然是低效的。我可以理解,如果我们不关闭,额外的信息可能会写入文件,但是为什么信息会被删除呢?这里的关键是没有被删除的信息。当代码执行file2.write(新字符串)时,此写入不会进入文件。它进入缓冲区,然后刷新到文件。如果不关闭文件,可能会丢失缓冲区。有趣的是,为什么它只使用file.write()编写前1168行,而不使用file.close()?Python无法控制缓冲区何时刷新到磁盘,这取决于操作系统。因此,是操作系统决定何时写入缓冲区。使用close()可以告诉操作系统,您已经完成了所有的编写工作。
file1 = open('/path/to/file1.txt', "r")
file2 = open('/path/to/file2.txt', "wa")
counter = 1

for line in file1:
    new_string = str(counter) + '\t' + line
    file2.write(new_string)
    counter += 1