V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ztoben
V2EX  ›  Python

Python 如何删除文件中指定范围的内容?

  •  
  •   ztoben · 2022-09-15 14:22:20 +08:00 · 1212 次点击
    这是一个创建于 835 天前的主题,其中的信息可能已经有所发展或是发生改变。

    事情是这样的,我这里的需求是多个大小相等的分片小文件合并成一个大文件,然后我不想小文件落地,想直接整一个大文件,然后通过分片的索引直接移动光标把小文件的内容写入大文件,但是考虑到又可能会有小文件写入错误数据的场景,那么我如何在下一次用正确的小文件把这一块错误的文件内容替换掉

    • truncate方法没法满足,因为他只指定了开头,没有指定结尾
    • 不想通过两个文件的方式重复写入
    • 有没有像truncate或者有replace这样的方法来完成这个呢 希望大佬赐教
    xylxAdai
        1
    xylxAdai  
       2022-09-15 14:43:55 +08:00
    全部取出来放内存里面,处理完了,再一次性重新写入大文件。担心写错的话就写到新文件里面。
    ztoben
        2
    ztoben  
    OP
       2022-09-15 14:54:09 +08:00
    @xylxAdai 有没有其他办法呢 能不能做到指定位置进行替换
    wxf666
        3
    wxf666  
       2022-09-15 15:07:36 +08:00
    啥意思。。

    比如 a.part.1 、a.part.2 、a.part.3 ,每个 1MB ,合并成 3MB 的 a.txt ?

    但 a.part.3 有可能写入不完整?

    下次继续运行时,需要重新在 a.txt 的 2MB 处,写入 a.part.3 ?
    ztoben
        4
    ztoben  
    OP
       2022-09-15 15:08:58 +08:00
    @wxf666 是滴
    ztoben
        5
    ztoben  
    OP
       2022-09-15 15:14:06 +08:00
    兄弟们 问了一个很蠢的问题 这个东西已经解决了 感谢各位
    wxf666
        6
    wxf666  
       2022-09-15 15:15:42 +08:00
    @ztoben seek 再 write 能满足吗?
    ztoben
        7
    ztoben  
    OP
       2022-09-15 15:34:04 +08:00
    @wxf666 是的 我就是这么写的 但是我打开文件的格式一直是 ab+ ... 所以一直不对 换了 rb+后就行了 我太蠢了 感谢
    xylxAdai
        8
    xylxAdai  
       2022-09-15 16:44:37 +08:00
    @ztoben 没太懂你意思。指定位置还不是你自己指定,为什么一定要直接在文件上操作,不觉得太危险了吗。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2633 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 06:15 · PVG 14:15 · LAX 22:15 · JFK 01:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.