【发布时间】:2025-12-29 10:25:12
【问题描述】:
我有一种检查点文件,有时我希望通过各种 python 程序对其进行修改。我加载文件,尝试使用 portalocker 锁定它,更改它,然后解锁并关闭它。
但是,portalocker 不能在最简单的情况下工作。 我创建了一个简单的文件:
$echo "this is something here" >> test
$python
Python 3.5.2 (default, Jul 5 2016, 12:43:10)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import portalocker
>>> f = open("test",'w')
>>> portalocker.lock(f, portalocker.LOCK_EX)
同时我仍然可以在另一个终端打开它:
$python
Python 3.5.2 (default, Jul 5 2016, 12:43:10)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> fl = open("test",'w')
>>> fl.write("I can still overwrite this\n")
>>> fl.close()
然后我关闭第一个,并检查文件:
>>> portalocker.unlock(f)
>>> f.close()
>>>
$ cat test
I can still overwrite this
我做错了什么?
【问题讨论】:
-
无法在刚刚发布 0.6.0 的 Windows 上重复此操作 - 但它在第一个
fl.close()上失败,而不是在fl.write()上。我建议你在这里打开一个问题 - github.com/WoLpH/portalocker/issues -
我认为您也应该在第二个终端中调用 portallocker.lock。然后这将失败,告诉您文件已被锁定。
标签: python python-3.x locking