【问题标题】:Errno::EISDIR in 'initialize' : Is a directory @ rb_sysopen - persistent.bak (Errno::EISDIR)Errno::EISDIR in 'initialize' : 是一个目录@rb_sysopen - persistent.bak (Errno::EISDIR)
【发布时间】:2016-12-26 21:54:41
【问题描述】:

我正在遍历文件夹中的文件以搜索特定字符串。 有一个文件夹名称为 persistent.bak。在浏览此文件夹时,出现错误... in 'initialize' : Is a directory @ rb_sysopen - persistent.bak (Errno::EISDIR)。

Dir.glob("**/*.*") do |file_name|
    fileSdfInput = File.open(file_name)
    fileSdfInput.each_line do |line|
        if ((line.include?"DATE") 
            @count = @count + 1
        end
    end
end

【问题讨论】:

    标签: ruby


    【解决方案1】:

    你的 glob Dir.glob("**/*.*") 匹配模式 persistent.bak 因此,在您的循环中,您实际上是在尝试将名为 persistent.bak 的文件夹作为文件打开,而 ruby​​ 不喜欢这个文件。

    只是为了说服自己,尝试输出文件名,你会看到的。

    最简单的解决方法:

    Dir.glob("**/*.*") do |file|
      next if File.directory? file
      fileSdfInput = File.open(file)
      fileSdfInput.each_line do |line|
        if (line.include?"DATE")
          @count = @count + 1
        end
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多