python - 在 python 中使用 lockfile 后写入文件时出现 PermissionError [Errno 13]

标签 python multithreading thread-safety file-locking filelock

我想安全地打开和写入文件,所以我决定使用 fileLock python 库。这是我的代码:

            with filelock.FileLock('../rsc/datasets/train/' + server_predict.remove_special_chars(str(id_park)) + '.csv'):
                with open('../rsc/datasets/train/' + server_predict.remove_special_chars(str(id_park)) + '.csv', mode='a') as file:
                    for line in data_by_id.values:
                        a = "\"" + server_predict.remove_special_chars(str(line[0])) + "\",\"" + str(line[1]) + "\"," + str(line[2]) #+ "\n"
                        file.write(a)

但是,这有时会引发 PermissionError 异常

file.write(a)

该行和该行中的其他人

for line in data_by_id.values

知道这个错误可能来自哪里吗?是我不明白fileLock是如何工作的吗?

谢谢!

最佳答案

您需要创建一个单独的锁定文件,如下所示 here:

from filelock import Timeout, FileLock

lock = FileLock("high_ground.txt.lock")
with lock:
    open("high_ground.txt", "a").write("You were the chosen one.")

Don't use a FileLock to lock the file you want to write to, instead create a separate .lock file as shown above.

请注意 FileLock.lock 扩展名。

关于python - 在 python 中使用 lockfile 后写入文件时出现 PermissionError [Errno 13],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53541555/

相关文章:

python - ElasticSearch/Solr-产品站点的同义词?

c++ - C++ 中独立于操作系统的线程?

c# - 实现线程安全的队列或列表时,返回Count前是否需要加锁?

java - vavr 的 Future 不执行某些代码,使用方法 andThen

java - 最后一个线程没有执行

c# - 位图线程安全只读吗?

java - 为什么静态final变量使用静态方法初始化需要synchronized?

python - pytorch卷积层中第一个初始化的权重是多少

python - Django Form - 动态切换字段存在

javascript - 如何使用 Javascript 将文件轻松上传到服务器(傻瓜版)