跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如何不重新写入重复内容而删除一个文件末尾的内容?
未分類
4 2 月 2020

如何不重新写入重复内容而删除一个文件末尾的内容?

如何不重新写入重复内容而删除一个文件末尾的内容?

資深大佬 : sxw 18

需求是这样的:

一个很大的文件,例如 5 千万行,每行是一个字符 a 。 想删掉最后一行。

我知道的一个办法是重新写入一次,但是耗时很多。

请问应该怎么操作才能避免重写文件呢?

使用 “w” 或者 “w+” 打开文件好像是直接清空文件?(我尝试使用 w+ 打开,seek 以后啥也不写入,文件被清空)

参考这个方法:如何编辑一个大文件 ( https://www.zhihu.com/question/20654719/answer/605322220 ) ,但是 “r+” 打开可以只修改特定位置而避免重写,但是无法把后面的内容截断。

实验代码( python3 ):

如何不重新写入重复内容而删除一个文件末尾的内容?

大佬有話說 (5)

  • 資深大佬 : tabris17

    ftruncate

  • 資深大佬 : rrfeng

    seek()

  • 主 資深大佬 : sxw

    @rrfeng 请问 seek 怎么操作呢?用什么方式打开文件?我尝试用 ‘w+’ 和 ‘w’ 打开文件 seek 再关闭,都会清空文件。

  • 主 資深大佬 : sxw

    @tabris17 非常感谢,弄好了

  • 主 資深大佬 : sxw

    根据 @tabris17 的方法,用 python3 实现是:

    “`python
    import os
    f = os.open(‘test_file’, os.O_RDWR|os.O_CREAT)
    os.ftruncate(f, os.path.getsize(‘test_file’) – 2)
    os.close(f)
    “`

    耗时几毫秒

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具