在python

时间:2018-11-29 14:44:29

标签: 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)

行和行中的其他人

  

用于data_by_id.values中的行

此错误可能来自何处?是我不了解fileLock的工作原理吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要创建一个单独的锁定文件,如图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.")
     

请勿使用 文件锁定来锁定要写入的文件,而是创建一个单独的文件    .lock 文件,如上所示。

请注意.lock的{​​{1}}扩展名。