当前位置: 首页 > 面试题库 >

在Python中读取和覆盖文件

闻人升
2023-03-14
问题内容

目前,我正在使用此:

f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.close()

但是问题在于旧文件大于新文件。因此,我最终得到了一个新文件,该文件的末尾有旧文件的一部分。


问题答案:

如果您不想关闭并重新打开文件,为避免出现竞争情况,可以truncate这样做:

f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.truncate()
f.close()

该功能将很可能也更清洁和更安全的使用open作为一个上下文管理器,这将关闭该文件处理程序,即使出现错误!

with open(filename, 'r+') as f:
    text = f.read()
    text = re.sub('foobar', 'bar', text)
    f.seek(0)
    f.write(text)
    f.truncate()


 类似资料:
  • 我正在Java写一个程序来更新文本文档上的数据。更新由按钮(JButton)触发。 特别是,我需要区分文档中的3行: 第一个描述了一个名为“total”的浮点值 第二个描述了一个名为“fail”的浮点值 第三个描述了一个称为“rate”的双值 在程序执行期间,我希望读取文档的3行并将其分配给变量;按下按钮后,相应的变量必须覆盖文档中的值。 为了实现这一点,我的理由如下: 我声明了3个私有变量(总数

  • 问题内容: 我正在阅读“深入Python”,并在有关类的章节中给出了以下示例: 然后作者说,如果要覆盖该方法,则必须使用正确的参数显式调用父方法。 如果该班有一个以上的祖先班怎么办? 我是否必须显式调用所有祖先类的方法? 另外,我是否必须对要覆盖的其他任何方法执行此操作? 问题答案: 关于子类-超类调用,这本书有些过时了。在子类化内置类方面也有些过时。 如今看起来像这样: 请注意以下几点: 我们可

  • 我正在尝试替换用Gradle生成的WAR文件中的一个文件。

  • 问题内容: 是否可以在Python中覆盖+ =? 问题答案: 是的,重写该方法。例:

  • 问题内容: 我正在尝试从文本文件中删除一行文本,而不将其复制到临时文件中。我正在尝试通过使用Printwriter和Scanner并让它们同时遍历文件来实现此目的,writer写Scanner读取的内容并用相同的东西覆盖每一行,直到到达我希望的行为止删除。然后,我前进扫描仪而不是写程序,然后像以前一样继续。这是代码: 但首先要使用参数:我的文件名是数字,因此它将显示为1.txt或2.txt等,因此

  • 问题内容: 是否可以用Python读取二进制MATLAB .mat文件? 我已经看到SciPy声称支持读取.mat文件,但是我没有成功。我安装了SciPy 0.7.0版,但找不到该方法。 问题答案: 需要导入,…