小编典典

打开文件以使用Python进行独占访问的最佳方法是什么?

python

解决此问题的最佳方法是:

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

内置函数的工作方式如下

>>> 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)。

该解决方案应在同一进程内工作(如上例所示),以及在另一个进程打开文件时。
如果崩溃的程序无法使锁保持打开状态,则是首选。


阅读 257

收藏
2020-12-20

共1个答案

小编典典

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

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

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

portalocker.lock(file, flags)

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

2020-12-20