读写相同的文本文件

时间:2013-03-09 15:37:10

标签: python file

我想做什么:

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

现在,修改后的文本应仅包含已修改的内容,但不包含初始内容。

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

如果是,参数应该是什么?
如果不是,我们可以通过一个声明来实现吗?

我用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))

1 个答案:

答案 0 :(得分: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,因为数据未被移除且更长。