gpt4 book ai didi

python - 在 Python 中打开文件以进行独占访问的最佳方法是什么?

转载 作者:IT老高 更新时间:2023-10-28 21:35:44 30 4
gpt4 key购买 nike

解决这个问题最优雅的方法是什么:

  • 打开文件进行读取,但前提是该文件尚未打开以进行写入
  • 打开文件进行写入,但前提是该文件尚未打开以进行读取或写入

内置函数是这样工作的

>>> path = r"c:\scr.txt"
>>> file1 = open(path, "w")
>>> print file1
<open file 'c:\scr.txt', mode 'w' at 0x019F88D8>
>>> file2 = open(path, "w")
>>> print file2
<open file 'c:\scr.txt', mode 'w' at 0x02332188>
>>> file1.write("111")
>>> file2.write("222")
>>> file1.close()

scr.txt 现在包含“111”。

>>> file2.close()

scr.txt 已被覆盖,现在包含“222”(在 Windows 上,Python 2.4)。

解决方案应该在同一个进程内(如上面的示例)以及另一个进程打开文件时工作。
如果一个崩溃的程序不能保持锁打开,这是首选。

最佳答案

我认为没有完全跨平台的方式。在 unix 上, fcntl 模块将为您执行此操作。但是在 windows 上(我假设你是通过路径),你需要使用 win32file 模块。

幸运的是,有一个可移植的实现 (portalocker),使用 python 食谱中的平台适当方法。

要使用它,打开文件,然后调用:

portalocker.lock(file, flags)

其中标志是 portalocker.LOCK_EX 用于独占写入访问,或 LOCK_SH 用于共享读取访问。

关于python - 在 Python 中打开文件以进行独占访问的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/186202/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com