相关疑难解决方法(0)

在 Windows 中的 Python 文件上混合使用 read() 和 write()

似乎在 Windows 中使用(或)权限打开的文件上write()紧跟 a不会更新文件。read()r+r+b

假设testfile.txt当前目录中有一个文件,内容如下:

This is a test file.
Run Code Online (Sandbox Code Playgroud)

我执行以下代码:

with open("testfile.txt", "r+b") as fd:
    print fd.read(4)
    fd.write("----")
Run Code Online (Sandbox Code Playgroud)

我希望代码打印This并将文件内容更新为:

This----a test file.
Run Code Online (Sandbox Code Playgroud)

这至少在 Linux 上运行良好。但是,当我在 Windows 上运行它时,消息会正确显示,但文件没有改变 - 就像write()被忽略了一样。如果我调用tell()文件句柄,它会显示位置已更新(4在之前write()8之后),但文件没有更改。

但是,如果我fd.seek(4)在该write()行之前放置一个明确的内容,那么一切都会按我的预期进行。

有人知道 Windows 下这种行为的原因吗?

作为参考,我在带有 NTFS 分区的 Windows 7 上使用 Python 2.7.3。

编辑

在回应的意见,我都尝试r+brb+-的官方Python文档似乎意味着前者是规范的。

fd.flush()在不同的地方打电话,并在read()和之间放置一个write()这样的: …

python windows file-io

6
推荐指数
1
解决办法
2685
查看次数

标签 统计

file-io ×1

python ×1

windows ×1