哈希迭代不返回子目录内容

2024-01-28

我有一个方法可以查找给定父目录的子目录。我将父目录存储在哈希中,然后将哈希作为参数传递。我试图将子目录的内容收集到一个数组中,然后将其输出到报告中。

我遇到了一个问题,数组的内容仅将目录存储在哈希的最后一个值中,我很快意识到内容在循环的每次迭代中都被覆盖,因此我创建了一个新数组来将内容存储到每次迭代后。

在进行更改之前,我看到子目录正常输出。这是我的代码示例:

# stores subdirectory contents into an array
def store_directories(directories, folder_to_exclude)
  # changes working directory to the directory variable

  subdir_list = nil
  directories.each_value do |value|

    directory = "#{value}"

    puts Time.now.to_s + "  >  " +  "Updating search directory..."
    Dir.chdir(directory)

    # outputs only subdirectories with a creation date of older than 24 hours, except for folders names 'test'
    Dir.glob("*.*").map(&File.method(:realpath))
    puts Time.now.to_s + "  >  " +  "Gathering subdirectories..."

    subdir_list = Dir.glob("*").map(&File.method(:realpath)).reject{|files| (not File.directory?(files) && (File.mtime(files) < (Time.now - (60*1440))) && (not files == directory + folder_to_exclude)) }
    puts subdir_list

  end
 return subdir_list
end

输出看起来像这样:

/path/to/parent/subdirectory1
/path/to/parent/subdirectory2
/path/to/parent/subdirectory3
/path/to/parent/subdirectory4 ...

这几乎按照我想要的方式工作,除了我只获取最后一个目录的内容。

这是我进行更改后的代码示例,以便数组的内容不会被覆盖:

# stores subdirectory contents into an array
def store_directories(directories, folder_to_exclude)
  # changes working directory to the directory variable

  subdir_list = directories.each_value do |value|

    directory = "#{value}"

    puts Time.now.to_s + "  >  " +  "Updating search directory..."
    Dir.chdir(directory)

    # outputs only subdirectories with a creation date of older than 24 hours, except for folders names 'test'
    Dir.glob("*.*").map(&File.method(:realpath))
    puts Time.now.to_s + "  >  " +  "Gathering subdirectories..."

    subdirectories = Dir.glob("*").map(&File.method(:realpath)).reject{|files| (not File.directory?(files) && (File.mtime(files) < (Time.now - (60*1440))) && (not files == directory + folder_to_exclude)) }
    puts subdirectories

  end
 return subdir_list
end

但这是问题,现在我的输出看起来像这样......

directory1
/path/to/parent1/
directory2
/path/to/parent2/
directory3
/path/to/parent3/

突然我的代码不再寻找子目录的内容,而是只返回父目录......


尝试这个:

# stores subdirectory contents into an array
def store_directories(directories, folder_to_exclude)
  # changes working directory to the directory variable

  subdir_list = nil
  directories.each_value do |value|

    directory = "#{value}"

    puts Time.now.to_s + "  >  " +  "Updating search directory..."
    Dir.chdir(directory)

    # outputs only subdirectories with a creation date of older than 24 hours, except for folders names 'test'
    Dir.glob("*.*").map(&File.method(:realpath))
    puts Time.now.to_s + "  >  " +  "Gathering subdirectories..."

    subdir_list << Dir.glob("*").map(&File.method(:realpath)).reject{|files| (not File.directory?(files) && (File.mtime(files) < (Time.now - (60*1440))) && (not files == directory + folder_to_exclude)) }
    puts subdir_list

  end
 return subdir_list
end

这本质上会保留旧代码,并在每次迭代时将新项目附加到 subdir_list 中,而不是覆盖。请注意,这里唯一真正的变化是subdir_list =被改为subdir_list <<

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哈希迭代不返回子目录内容 的相关文章

  • 使用 Ruby 通过 Outlook 发送消息的最简单方法是什么?

    我的工作要求我为某些测试自动生成电子邮件 我一直在四处寻找 但一直未能找到可以快速实施的合理解决方案 它需要在 Outlook 中 而不是其他邮件服务器中 因为我们有一些奇怪的身份验证规则 并且我们需要保存草稿的选项 而不仅仅是发送消息 显
  • 在Ruby中从csv文件中获取第二行[重复]

    这个问题在这里已经有答案了 actual row File open file name 0 r first row data CSV foreach actual row do row first row data lt lt row 1
  • 载波无法删除图像

    我现在使用 Carrierwave 上传图像 一切都很好 除了一个 当我添加用于删除上传图像的复选框时 我收到错误 无法批量分配受保护的属性 remove image Form Model class Manufacturer lt Act
  • 什么时候需要将参数传递给“Thread.new”?

    在线程外部定义的局部变量似乎从内部可见 因此以下两种用法Thread new似乎是一样的 a foo Thread new puts a gt foo Thread new a a puts a gt foo The document ht
  • 动态分配背景图片scss/sass

    我想要做的是有一个表单 您可以在其中上传图片 然后当您查看该对象时 图片会在特定 div 中居中 垂直和水平向上倾斜 其大小未知等 除非有办法使用 image tag 帮助器将其垂直居中 否则我希望能够使用该图像作为背景图像 在我的 css
  • 为什么 Ruby 使用 respond_to?而不是respond_to?

    我很好奇为什么 Ruby 用于检查对象是否响应方法的内省相关方法是respond to 代替responds to 我总是觉得很尴尬 但也许那是因为我已经习惯了respondsToSelector在 Objective c 中 Matz p
  • 使用 mysql2 gem 获取最后插入的 id

    我有这样的代码 require mysql2 db query insert into clients Name values client 我可以通过 1 个查询返回最后插入的 ID 吗 您可以使用last id客户端实例的方法 clie
  • 该块如何用于整数倍方法?

    我不明白如何n times该行在下面给出的 ruby 代码中工作 特别是逗号的含义以及如何new变量已更新 def fib n raise fib not defined for negative numbers if n lt 0 new
  • 在 Rails 中强制内联渲染 PDF 文档

    我正在编写一个从一组 XML 文件生成 PDF 文件的服务 正在正确生成 PDF 但是 每次我单击 查看 PDF 链接时 浏览器都会要求用户下载 PDF 文件 我需要 PDF 内联显示 就像任何常规 HTML 页面一样 我虽然我写的代码是正
  • 使用 google-drive-ruby gem 在 google 云端硬盘中创建文件夹

    我知道这里提出了类似的问题 但是我仍然无法完成这项工作 因为我的情况有点不同 我希望能够使用以下命令在谷歌驱动器中创建一个文件夹谷歌驱动器红宝石宝石 https github com gimite google drive ruby 根据谷
  • 使用 Devise 和 Rails 从 Twitter Oauth 获取电子邮件

    我已经设置了一个基本的 Rails 应用程序来使用 twitter oauth gem 和设计 并且已经能够登录用户 但是 我的问题是我现在已将我的应用程序列入白名单 并且我想在响应中收到用户的电子邮件 我已遵循 Twitter 端的所有必
  • 如何在 Mac OS X 上使用 ulimit 或每个进程更改 C 或 Ruby 程序的堆栈大小?

    似乎为 C 程序或 Ruby 程序 使用 C 堆栈 设置堆栈大小的推荐方法是使用ulimit在 Bash shell 中 但 ulimit s 8192 ulimit s 16384 bash ulimit stack size canno
  • Rails validates_与模型的错误消息相关

    我在模型中使用 validates linked 来使用其他模型的验证代码 问题是验证失败的消息是 is invalid 我想将模型验证失败的实际描述错误冒泡到顶部 我发现这个问题 验证与模型的错误消息关联 https stackoverf
  • 如何在Windows 7上运行Ruby程序?

    有谁知道如何在 Windows 7 上运行 编译 Ruby 程序 例如 你可以在 Eclipse 中编译 Java 但我似乎找不到 Ruby 的编译器 http rubyinstaller org http rubyinstaller or
  • Jekyll 站点仅在推送到 GitHub 时才会失败

    我正在使用 Jekyll 开发一个新版本的静态网站 该网站通过 Github 页面部署 https devcampy com https devcampy com 存储库 https github com gianarb devcampy
  • Mountain Lion 的 RVM 问题

    我可以在运行 Mountain Lion 的 Mac 上安装任何 Ruby 版本 我已经确保 Brew Doctor 一切正常 当我运行 ie rvm intall 1 9 3 head 时 我得到以下信息 From git github
  • Mac Snow Leopard 上的 Curb gem 出现问题

    这消耗了我几个小时的时间 在控制台中我运行 require curb 我收到错误 LoadError dlopen usr local lib ruby gems 1 8 gems taf2 curb 0 5 4 0 lib curb co
  • 如果不选择 Updated_at 属性,则无法更新 Rails 4 中的模型

    我正在从 Rails 3 2 13 升级到 4 并遇到更新模型的问题 我正在尝试仅更新模型上的单个属性 其中我只有 id 我还需要验证和回调 这在 Rails 3 中运行良好 但在 Rails 4 中遇到了麻烦 在 Rails 4 中 如果
  • 在 Ruby 1.8.7 中将带有二进制数据的 YAML 响应转换为 UTF-8

    我正在从 API 中提取响应并接收 response job unit count 1 slug Answers lc tgt ja body tgt binary 5Zue562U lc src en body src Answers j
  • CanCan load_and_authorize_resource 触发禁止属性

    我有一个使用强参数的标准 RESTful 控制器 class UsersController lt ApplicationController respond to html js def index users User all end

随机推荐

  • http:// 包装器在服务器中被禁用?

    错误信息 Warning include http wrapper is disabled in the server configuration by allow url include 0 in C xampp htdocs uberg
  • 如何在 Mathematica 中定义与 D 交换的函数

    我想实现一个运算符f通勤与差异化D Unprotect D D f y x f D y x Protect D D f Sin x x D f Sin x 1 x 不幸的是这段代码产生了两个不同的结果 f Cos x as expected
  • R 正则表达式中的匹配字母

    假设我运行以下命令 txt lt client A field foo category bar grep field A z txt value TRUE perl TRUE 基于regexr com http regexr com我预计
  • Python 中 __set__ 和 __setattr__ 有什么区别,什么时候应该使用哪个?

    正如标题所说 来自 Java 我习惯于 private int A public void setA int A this A A public int getA return this A 我该如何在 Python 中做到这一点 如果需要
  • 如果表单数据无效,为什么 Django 返回 http 200?

    AFAIK Django 使用这种方式来处理表单 GET 客户端接收带有输入元素的 HTML 用户填写表格 用户提交表单 http POST server Django 验证表单 在这种情况下是无效的 服务器向用户发送包含相同表单和错误消息
  • 从 Crashlytics 3.0.0 开始,实现用户提示是应用程序的责任

    我收到以下警告 Crashlytics Crash 警告 用户提示功能已启用 作为 Crashlytics 3 0 0 实现用户提示是应用程序的 责任 请参阅 Crashlytics h 的注释 crashlyticsDidDetectRe
  • 如何限制 Windows 上底部窗口全屏最大 y 位置

    我想做的是创建一个像 Windows 任务栏一样的软件 所以我的观点是 我希望软件在任务栏上方可见 并且当您最大化另一个应用程序窗口时 它不会越过它 所以我希望任何其他软件在最大化状态下都直到红线 红线将是我的软件 除了其他软件全屏时之外
  • Windows Phone 锁屏下连接插座

    我尝试编写使用套接字连接到服务器的应用程序 一切正常 但是当应用程序在锁屏下运行时 套接字无法连接 它正在等待锁屏被删除 设备连接到 PC 因此 WiFi 不应影响 自动关闭 以节省电池电量 如何重现 代码如下 1 启动应用程序并等待 30
  • 是否可以创建一些 IGrouping 对象

    I have List
  • 无法导入“D”:FLASK_APP

    from flask import Flask app Flask name app route def hello world return Hello World 我是烧瓶新手 我编写了这个基本代码并将其保存在 D Cat vs Dog
  • 原始类型、无界通配符和有界通配符

    我有一个简单的问题如下 这是关于整个问题的简单示例 List a new ArrayList List
  • 通过连续的字符串替换来提高循环的性能?

    我有 html 文本 我想更改 ouml 事物到真正的字符 如 等 否则 xml 包不接受它 所以我写了一个小函数来循环替换表 link1 http www w3schools com tags ref entities asp link2
  • 了解控制台应用程序中的 .net Core 依赖注入

    控制台应用程序不像网络应用程序那样将启动文件与配置服务一起使用 我正在努力理解依赖注入的关键概念 请注意以下示例无法编译 这是我认为它应该如何工作的基本示例 请指出任何非常规或错误的内容 static void Main string ar
  • SQL 将列转换为逗号分隔的行

    如果名称相同 我尝试将用户名字段组合成逗号分隔的字符串 电流输出 由于 Name Admin 有 4 个用户链接到它 我试图显示为 电子邮件受保护 cdn cgi l email protection 电子邮件受保护 cdn cgi l e
  • 如何从地址调用不同的合约?

    在 Solidity 以太坊 中 人们需要合约地址来调用该合约 contract KittyInterface function getKitty uint256 id external view returns bool isGestat
  • 从 8 位转换为 1 字节

    我有一个 8 位的字符串 我想将其转换为 1 个字节 我不确定为什么我的功能无法正常工作 我将 8 位存储到 8 个无符号字符的数组中 到目前为止 这是我的方法 unsigned int bitsToBytes unsigned char
  • 设置默认区域 - 避免在网站上的每个链接上使用 `, new {area = ""}`

    此代码位于母版页内 li a href gt Main site link a li li a href gt Area link a li 所有链接都运行良好 直到我转到区域链接 当我去那里时 主要区域的所有路线都不起作用 为了解决这个问
  • 无法在 nunit 测试中打开 sqlconnection

    我有一个奇怪的问题 我无法弄清楚 我试图围绕一些数据库代码编写一些集成测试 但我的单元测试因奇怪的异常而失败 在控制台应用程序下正常运行代码效果很好 public static class DatabaseManager public st
  • 在 MATLAB 中在轴外添加图例而不重新缩放

    我在 MATLAB 中有一个 GUI 其中预先放置了一组轴 我使用图例的位置属性将其放置在轴的右侧 但是 通过这样做 轴会重新缩放 以便轴 图例占据轴的原始宽度 有什么办法可以避免重新调整大小吗 Example x 0 1 10 y sin
  • 哈希迭代不返回子目录内容

    我有一个方法可以查找给定父目录的子目录 我将父目录存储在哈希中 然后将哈希作为参数传递 我试图将子目录的内容收集到一个数组中 然后将其输出到报告中 我遇到了一个问题 数组的内容仅将目录存储在哈希的最后一个值中 我很快意识到内容在循环的每次迭