python以 w 模式打开的文件,write写入时为什么不覆盖前面的内容?
本帖最后由 ntldr 于 2024-5-28 18:28 编辑请教各位大神:在本站看孙兴华的python基础教程,在文件和文件夹那一节有段代码,没弄明白:
文件对象 = open(r"c:\1.txt",'r',encoding='utf-8')
文件对象新 = open(r"c:\2.txt",'w',encoding='utf-8')
while True:
读的数据 = 文件对象.read(10)
if len(读的数据) == 0 :
break
文件对象新.write(读的数据)
文件对象.close()
文件对象新.close()
这段代码中,每次循环时,文件对象新.write(读的数据),这句为什么不覆盖前面的内容,而且能把1.txt中的内容完整写到2.txt中。 你是先open文件,然后不断往这个文件里写入,而不是每次写入都重新open文件 因为每次write都会移动“文件对象新”的文件指针,直到“文件对象新.close()”才会拒绝“文件对象新”的文件指针移动。你想每次write都覆盖2.txt已有的全部内容,那么就要把“文件对象新.close()”这段放在while循环内。 boryou 发表于 2024-5-28 20:34
你是先open文件,然后不断往这个文件里写入,而不是每次写入都重新open文件
多谢,多谢,想了好久。 shadmmd 发表于 2024-5-28 22:02
因为每次write都会移动“文件对象新”的文件指针,直到“文件对象新.close()”才会拒绝“文件对象新”的文 ...
感谢,这么一说就明白了。 这种问题 直接问GPT 一下就告诉你了 用with open w打开一次就写空了。 fightboy 发表于 2024-5-29 00:12
这种问题 直接问GPT 一下就告诉你了
问过,它的答案是:
在这段代码中,打开了两个文件对象,一个用于读取(文件对象),另一个用于写入(文件对象新)。在每次循环中,从源文件(1.txt)读取数据,然后将读取到的数据写入到目标文件(2.txt)中。
由于打开文件时使用了写入模式 ('w'),这意味着每次写入操作都会清空目标文件的内容,并从头开始写入。这样就不会出现覆盖前面内容的情况。
如果想要以追加模式写入数据,即在文件末尾添加新内容而不清空原内容,可以使用追加模式 ('a') 来打开文件对象新:
python
复制代码
文件对象新 = open(r"c:\2.txt",'a',encoding='utf-8')
这样做会使得每次写入操作都将新数据追加到文件的末尾,而不会清空已有内容。
页:
[1]