尝试使用 FileLock、Python 写入文件时权限被拒绝

Posted

技术标签:

【中文标题】尝试使用 FileLock、Python 写入文件时权限被拒绝【英文标题】:Permission denied when trying to write a file with FileLock, Python 【发布时间】:2020-11-11 19:18:44 【问题描述】:

我正在尝试编写一个二进制文件并锁定其他进程的访问权限,直到该文件完全写入磁盘。我正在使用 Windows 操作系统。有趣的是,如果我编写小文件(~1KB),代码可以正常工作,但是当我尝试编写更大的文件时,Python 会引发错误:

PermissionError: [Errno 13] 权限被拒绝。

with open(full_file_name, "wb") as f:
    lock = FileLock(full_file_name)
    with lock:
        f.write(bytearray(array))

【问题讨论】:

【参考方案1】:

你应该使用“~.lock”文件来锁定文件。

lock = FileLock(full_file_name + ".lock")
with lock:
    with open(full_file_name, "wb") as f:
        f.write(bytearray(array))

请详细查看 PyPi 官方文档的示例代码: https://pypi.org/project/filelock/

【讨论】:

谢谢。我错过了文档中的这个 .lock。

以上是关于尝试使用 FileLock、Python 写入文件时权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

如何将单个 python 文件(文件锁)集成到带有 specfile 的 pyinstaller?

FileLock 以防止删除文件但我无法打开它

用于多进程读写的Java文件锁[重复]

Java使用FileLock实现Java进程互斥锁

NIO--FileLock,Path,Files,AsynchronousFileChannel,Charset

Java 中的 FileLock 在 Docker 挂载卷中不起作用