我有多个python应用程序/脚本,我想写/读同一个文件。例如,如果文件打开则阻止。是否有可能使这个安全和死锁免费。我使用windows和python2。
答案 0 :(得分:1)
以下是与平台无关的文件锁定模块http://esprima.org/demo/validate.html
以下是该模块中用于在Windows上执行文件锁定的相关代码。
class WindowsFileLock(BaseFileLock):
"""
Uses the :func:`msvcrt.locking` function to hard lock the lock file on
windows systems.
"""
def _acquire(self):
open_mode = os.O_RDWR | os.O_CREAT | os.O_TRUNC
try:
fd = os.open(self._lock_file, open_mode)
except OSError:
pass
else:
try:
msvcrt.locking(fd, msvcrt.LK_NBLCK, 1)
except (IOError, OSError):
os.close(fd)
else:
self._lock_file_fd = fd
return None
def _release(self):
msvcrt.locking(self._lock_file_fd, msvcrt.LK_UNLCK, 1)
os.close(self._lock_file_fd)
self._lock_file_fd = None
try:
os.remove(self._lock_file)
# Probably another instance of the application
# that acquired the file lock.
except OSError:
pass
return None
我仍然在试图弄清楚这个功能究竟是如何实现的......但Windows确实提供了一个用于获取文件锁定的API。