编辑由python脚本处理的文件

时间:2017-09-14 06:36:12

标签: python concurrency io

我正在尝试使用一个文件(csv,json,txt,还没有决定格式),我可以删除几行数据。一个python脚本将在cron上每5分钟运行一次并检查文件如果有任何新内容,如果有,请处理它并在处理时删除每一行。

我正在尝试阻止我打开文件的情况,进行一些更改并在进程到来时保存它,抓住数据并清空文件,但我的保存将其写回。

我认为保证安全的唯一方法是让它处理文件夹并只查找新文件,所有更改都将删除到新文件中。所以永远不会有发生这种情况的风险。

有更好的方法,还是这是最好的方法?

2 个答案:

答案 0 :(得分:1)

检查this answer to see if the file is already open,如果是,请再等5分钟,或者在内部睡眠,然后每10秒再试一次,直到它工作,但不超过4分钟,例如:

for i in range(attempts):
    if not fileInUse():
        processFile()
    else:
        time.sleep(10)

答案 1 :(得分:0)

您可以使用以下步骤:

  1. 在cron中运行的Python脚本将检查文件是否由任何其他进程打开。在Linux中,可以使用lsof
  2. 完成
  3. 如果文件已打开,则当cron运行时,它将不会处理文件数据。
  4. 如果该文件被其他一些脚本使用,则可以为脚本添加相同的逻辑,该脚本将向该文件添加数据。