【问题标题】:Edit file being processed by python script编辑python脚本正在处理的文件
【发布时间】:2018-02-23 00:36:45
【问题描述】:

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

我试图防止出现以下情况:我打开文件,进行一些更改并保存它,而该过程通过抓取数据并清空文件但我的保存将其写回。

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

有没有更好的方法,或者这是最好的方法?

【问题讨论】:

标签: python concurrency io


【解决方案1】:

您可以使用以下步骤:

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

【讨论】:

    【解决方案2】:

    检查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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-22
      • 2017-07-27
      • 2012-12-28
      • 2020-06-06
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 2018-04-06
      相关资源
      最近更新 更多