gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:28 25 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 模块。

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

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

portalocker.lock(file, flags)

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

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

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