Ruby递归目录文件的又一种方法

经常派得上用场,记录一下。

递归文件做一些操作

#encoding:utf-8require 'pathname'def recursive_enum_files(from_path)from_path = Pathname.new(from_path)raise ArgumentError,'must start at a directory.' unless from_path.directory?from_path.enum_for(:find_files,from_path)
endprivate def find_files(parent,&block)parent.children.sortparent.children.each do |child|if child.directory?find_files(child,&block)elseyield child if block_given?endend
endstart_path = 'E:/abcdefg'
recursive_enum_files(start_path).each do |path|puts (File.size?(path)/1024.0/1024.0/1024.0).round(2).to_s + 'GB => ' + path # 列出文件大小
end

对文件夹做一些操作

#encoding:utf-8require 'pathname'def recursive_enum_files(from_path)from_path = Pathname.new(from_path)raise ArgumentError,'must start at a directory.' unless from_path.directory?from_path.enum_for(:find_files,from_path)
endprivate def make_total(s)return Proc.new { |i| s += i }
endprivate def find_files(parent,&block)n = make_total(0)parent.children.each do |child|if child.directory?n.call(find_files(child,&block))elsen.call(File.size?(child))endendyield parent,n.call(0) if block_given?n.call(0)
endstart_path = 'E:/abcdefg'
recursive_enum_files(start_path).each do |path,size|puts (size/1024.0/1024.0/1024.0).round(2).to_s + 'GB => ' + path.to_s if size >= 1024*1024*1024*5 # 大于5GB
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/5876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法系列】哈希表

目录 哈希表总结 leetcode题目 一、两数之和 二、判定是否互为字符重排 三、存在重复元素 四、存在重复元素 II 五、字母异位词分组 六、在长度2N的数组中找出重复N次的元素 七、两个数组的交集 八、两个数组的交集 II 九、两句话中的不常见单词 哈希表总结 1.存储数…

C语言/数据结构——每日一题(链表的中间节点)

一.前言 今天我在LeetCode刷到了一道单链表题,想着和大家分享一下这道题:https://leetcode.cn/problems/middle-of-the-linked-list。废话不多说让我们开始今天的知识分享吧。 二.正文 1.1题目描述 1.2题目分析 这道题有一个非常简便的方法——快慢指…

Kafka如何将消息发送到指定分区

背景 面试一个时,面试官问了一个问题,Kafka如何做到顺序消息。我回答只给Kafka的Topic创建一个分区,发送到该Topic的消息在Kafka中就是有序的。 面试官又问,如果Topic有多个分区呢?我回答消息发送者在发送消息的时候…

袁庭新ES系列17节|Spring Data Elasticsearch基础

前言 为了简化对Elasticsearch的操作Spring Data提供了Spring Data Elasticsearch。Spring Data Elasticsearch是Spring Data技术对Elasticsearch原生API封装之后的产物,它通过对原生API的封装,使得程序员可以简单的对Elasticsearch进行各种操作。接下来…

信融算网,创启未来 | 移动云一体化算网调度平台发布

4月29日上午,中国移动算力网络大会“自主可控算力网络应用”分论坛在苏州召开,中国移动云能力中心副总经理吴世俊、中国移动信息技术中心副总经理陈国出席论坛并发表致辞。论坛发布全国首个实现通算、智算、超算、量子计算,以及网络、安全一站…

全栈开发之路——前端篇(2)文件、组件与setup引入

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 本文系该系列第二篇,主要将介绍各个文件的意义、组件结构与导入以及setup的引入。 目录 一、src外文件介绍.gitignore为git忽略文件env.d.ts用于识别其他文件index.htmljson文件vite.confi…

【JAVASE】带你了解的方法魅力

✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:橘橙黄又青-CSDN博客 目标: 1. 掌握方法的定义以及使用 2. 掌握方法传参 3. 掌握方法重载 …

java 基础面试-- hashCode 方法重要性及使用

引言 在Java编程的世界里,hashCode方法扮演着至关重要的角色,尤其在涉及到集合类(如HashMap、HashSet)和对象比较的场景中。本文将深入探讨hashCode方法的工作原理、重要性以及如何正确地重写它,以确保你的程序在性能…

[C++][算法基础]四种基本背包问题(动态规划)

1. 01背包问题 有 𝑁 件物品和一个容量是 𝑉 的背包。每件物品只能使用一次。 第 𝑖 件物品的体积是 𝑣𝑖,价值是 𝑤𝑖。 求解将哪些物品装入背包,可使这些物品的总体…

10.JAVAEE之网络编程

1.网络编程 通过网络,让两个主机之间能够进行通信 >基于这样的通信来完成一定的功能进行网络编程的时候,需要操作系统给咱们提供一组 AP1, 通过这些 API才能完成编程(API 可以认为是 应用层 和 传输层 之间交互的路径)(API:Socket API相当…

RK3399平台Android7系统编译及问题解决

目录 【Android系统编译】 平台: Android编译: 烧写固件路径: 【android版本号查看】 【RK3399开发环境搭建】 4.1 JDK 安装 4.2 Linux 服务器开发环境搭建 4.2.1 发布包使用 Linux 服务器系统版本 4.2.2 网络环境搭建 4.2.3 软件…

【树——数据结构】

文章目录 1.基本概念2.基本术语1.结点之间的关系描述2.结点,树的属性描述3.有序树,无序树4.森林 3.树的性质考点1考点2考点3考点4 4.树的存储结构5.树和森林的遍历 1.基本概念 结点,根节点,分支结点,叶子结点&#xf…

Redis系列-1 Redis介绍

背景: 本文介绍Redis相关知识,包括Redis的使用、单线程机制、事务、内存过期和淘汰机制。后续将在《三方件-3 Redis持久化机制》中介绍Redis基于RDB和AOF的持久化机制;在《三方件-4 Redis集群》介绍主从、哨兵和Cluster集群相关的内容&#…

python 11Pandas数据可视化实验

实验目的: 学会使用Pandas操作数据集,并进行可视化。 数据集描述: 该数据集是CNKI中与“中药毒理反应”相关的文献信息,包含文章题目、作者、来源(出版社)、摘要、发表时间等信息。 实验要求&#xff1…

Element对象

Element对象 Element是一个通用性非常强的基类,所有Document对象下的对象都继承自它,这个对象描述了所有相同种类的元素所普遍具有的方法和属性,一些接口继承自Element并且增加了一些额外功能的接口描述了具体的行为,例如HTMLEle…

QT-QTCreator环境配置

准备工作: 下载QT: 链接:https://pan.baidu.com/s/1prJcsC4DGqhKiXvLuPQFVA?pwd60b3 提取码:60b3下载WindowsKits: 链接:https://pan.baidu.com/s/1QNiS3HpbH5M5kXx5AhkqnQ?pwde2h8 提取码:e2h8安装的…

Windows环境下基于CMake构建Lua

Windows环境下基于CMake构建Lua 环境!!!注意: lua-5.4.6.tar.gz压缩包中,并未提供luac.c文件,无法构建luac.exe,可以从lua-5.4.5.tar.gz压缩包中拷贝使用 一、搭建基于CMake构建的Lua环境二、构…

Python-快速搭建一个管理平台

目录 📜 准备工作 一、项目介绍 ✨ 二、制作数据库表 添加信息 ⚒️ 三、运行client.exe 🚀 1、连接数据库,选择对应表,生成代码 2、把后端代码依次复制到项目中 3、把前端代码依次复制到前端项目中 4、添加路由 四、运行后端项目…

python生成随机字符串

随机字符的场景大致有以下场景: 1.产生随机字符串 无数字 2.产生随机长度的字符串 无数字、有数字 3.产生随机手机号 4.产生随机n位的数字 5.产生随机n以内的数字 随机使用的两种思路如下: 一:使用random.randint(0,n) 我们有一个包含…

《21天学通C++》(第十三章) 类型转换运算符

1.为什么需要类型转换? ①兼容不同类型: 在C中不同类型的数据不能直接进行运算,如需要则要进行类型转换 ②指针转换: 在处理指针时,经常需要把一个类型的指针转化为另一个类型的指针 ③与C语言兼容: C兼…