python - 等待文件出现和消失?

标签 python ruby file

我正在使用 chromedriver 下载文件。它创建一个“crcdownload”文件,然后将其转换为一个文件。

我使用以下代码在 ruby​​ 中完成了此操作。但不确定如何使 wait_for_download 在 Python 中等效。另一个附加要求是,如果下载时间超过 30 秒,或者如果 crcdownload 在该时间段内没有消失,则应该退出。

  def wait_for_download
    Timeout.timeout(TIMEOUT) do
      sleep 0.1 until downloaded?
    end
  end

  def downloading?
    downloads.grep(/\.crdownload$/).any?
  end

 def downloaded?
    !downloading? && downloads.any?
  end

什么 python 模块最适合这种情况?监控一个目录,然后在某个事件发生超时时进行更新,这样它就不会无限期地阻塞?

最佳答案

您的 sleep 方式很有效,但还有更有效的更好方式。

更好的方法是使用文件系统监控功能:

Ruby 和 Python 都有跨平台工作的工具,并使用 native 文件系统的监视和通知,并且是非阻塞的。

  • 一个这样的 Ruby gem 是 Listen

  • 一个这样的 Python 包是 Watchdog

关于python - 等待文件出现和消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27614010/

相关文章:

c - C语言遍历文件时出现奇怪的空格

c - 从文件更新数组,在 C 中进行验证

Python 对两个列表求幂的性能

ruby-on-rails - 使用 rake db :create 创建 Rails DB 时出错

python - 没有PIP的依赖python模块的离线安装

ruby - 如何在使用 Ruby Mechanize 网络爬行时绕过网络错误

ruby-on-rails - 在Ruby on Rails中,要扩展String类,代码应该放在哪里?

c - _fsopen 用于 Borland c++ builderX 2003 和 MVS2008 中的 C

python - Django 3.2 属性错误 : 'TextField' object has no attribute 'db_collation'

python - console_scripts 入口点被忽略?