【问题标题】:Why my file end up blank when I try to remove characters? [duplicate]当我尝试删除字符时,为什么我的文件最终是空白的? [复制]
【发布时间】:2021-03-19 20:26:53
【问题描述】:

我关注了这个主题 here,因为我想删除输出文本文件中的 <br />

所以我的代码如下:

def file_cleaner(video_id):
    with open('comments_'+video_id+'.txt', 'r') as infile, open('comments_'+video_id+'.txt', 'w') as outfile:
        temp = infile.read().replace("<br />", "")
        outfile.write(temp)  

如果我删除这个函数调用我的文件有内容,但是在我调用这个函数之后我的文件是空的。我哪里做错了?

【问题讨论】:

  • w模式下打开文件会先清空文件。
  • 您不能两次open() 同一个文件。 'w' 在打开文件时也会截断文件。
  • 那我应该改变什么?
  • @J.erome 尝试以outfile 打开一个不同的文件。否则,您必须打开文件一次 以读取 写入'r+'。读取文件数据,更改它,然后将新数据写回(确保先“倒回”文件)。
  • stackoverflow.com/questions/13089234/… 我想这是我的解决方案

标签: python file-writing


【解决方案1】:

w 模式打开文件首先会截断文件。所以没有什么可以从文件中读取的。

先读取文件,再打开写入。

def file_cleaner(video_id):
    with open('comments_'+video_id+'.txt', 'r') as infile:
        temp = infile.read().replace("<br />", "")
    with open('comments_'+video_id+'.txt', 'w') as outfile:
        outfile.write(temp)

【讨论】:

  • ...需要注意的是,如果程序在outfile.write() 操作的中途退出,文件最终可能会损坏,因此为什么有很多关于如何以原子方式进行的现有问答条目 在 Python 中更新文件的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 2020-05-05
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多