python - 打开文件进行随机写入而不截断?

标签 python

在 python 中,打开文件进行操作时可以提供一些标志。我有点困惑,无法找到允许我随机写入而不截断的组合。我要找的行为等价于C:不存在就创建,否则就打开写(不截断)

打开(文件名,O_WRONLY|O_CREAT)

Python 的 document令人困惑(对我来说):"w" 将首先截断文件,"+" 应该意味着更新,但是 "w+"无论如何都会截断它。有没有办法在不求助于低级 os.open() 接口(interface)的情况下实现这一点?

注意:"a""a+" 也不起作用(如果我在这里做错了,请更正)

cat test.txt
eee

with open("test.txt", "a+") as f:
  f.seek(0)
  f.write("a")
cat test.txt
eeea

是不是append模式一定要写到最后?

最佳答案

你可以用 os.open 来做:

import os
f = os.fdopen(os.open(filename, os.O_RDWR | os.O_CREAT), 'rb+')

现在你可以在文件中间读、写、查找等等。并创建文件。在 Python 2 和 3 上测试。

关于python - 打开文件进行随机写入而不截断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28918302/

相关文章:

python - 使用 python 在文件中的关键字之间查找值

python - 如何唤醒房间里最多的人?

python - 遍历python中具有相同索引位置的多个列表

python - 如何检查列表是否只有一个真实值?

python - AttributeError: 'tuple' 对象没有属性 'shape'

python - 如何等待协程直到满足条件?

python - pipelinev 安装 django 不用每次都重新下载?

带有 Tkinter 的 Python 聊天机器人

python - 如何在配置模块中设置 Flask 应用程序的主机和端口?

python - 如何在特定日期的特定时间运行 Airflow?