Python打开文件模式“w”问题

求问,在学Python,在下面的代码中,根据上课是所说,open文件是“w”模式每次写入会覆盖原先文件中的内容,这个为什么没有全部覆盖啊

a = open("/Users/ly/Desktop/bill.txt", "r", encoding="UTF-8")

a_bak = open("/Users/ly/Desktop/bill_bak.txt","w",encoding="UTF-8")
for i in a.readlines():
    c = i.strip().split(",")
    for g in c:
        if g == "正式":
            a_bak.write(i)
a.close()
a_bak.close()



可能是因为在写入文件之前,文件中已经存在了一些内容,这些内容没有被删除,所以在使用“w”模式打开文件时,新写入的内容会和原有的内容一起被保存到文件中。如果想要完全覆盖原有内容,可以尝试先清空bill_bak.txt文件中的内容再进行写入操作。

【相关推荐】



  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/675072
  • 你也可以参考下这篇文章:python 3中\w+匹配汉字的问题。
  • 除此之外, 这篇博客: Python文件模式及操作详解中的 六、w 模式的使用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    w是只写模式:在文件不存在时创建空文档;文件存在时清空文件,文件指针跑到文件开头。

    with open('b.txt',mode='w',encoding='utf-8') as f:
        f.write('123\n')
        f.write('1234\n') 
        f.write('12345\n')
    

    在文件不关闭的情况下,连续的写入,后写的内容一定跟在前写内容的后面。

    如果重新以w模式打开文件,则会清空文件内容。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^