2

我想做的事:

  • 打开一个文本文件
  • 阅读内容
  • 对其进行一些更改
  • 将其写回文件

现在修改后的文本应该只有修改后的内容,而不是初始内容。

我们可以通过仅使用open()function 设置 mode 参数来实现吗?

如果是,参数应该是什么?
如果否,我们可以只通过一个 with 语句来实现吗?

我用 2 个语句来实现它,如下所示

replace_pattern = re.compile(r"<.+?>",re.DOTALL)

def text_process(file):

    with open(file,'r') as f:
        text = f.read()

    with open(file,'w') as f:
        f.write(replace_pattern.sub('',text))
4

1 回答 1

3

如果你想用“固定”版本替换文件中的文本,你必须重新打开文件,或者在r+(读+写)模式下打开它并在写入前截断:

with open(file,'r+') as f:
    text = f.read()
    f.seek(0)
    f.truncate()
    f.write(replace_pattern.sub('',text))

如果您不先截断文件,那么您将面临写出太少新字节的风险。你foo bar baz读和写出来foo spam,然后你的文件最终因为foo spambaz数据没有被删除并且更长。

于 2013-03-09T15:38:56.083 回答