一步一步学Ruby(二十一):文件操作2

1、打开读取文件

file = File.open( "cnblogslink.txt" )
file.each { |line| print "#{file.lineno}. ", line }
file.close

输出:

1. 社区
2. 新闻
3. 社区
4. 新闻
5. 招聘
6. 博问
7. 小组 
8. 闪存 
9. 网摘 
10. .NET频道

file.lineno显示的是行号

2、ARGV and ARGF

ARGV

ARGV << "cnblogslink.txt"#The gets method is a Kernel method that gets lines from ARGV
print while getsp ARGV.class=begin
输出:社区新闻 社区新闻 招聘 博问 小组  闪存  网摘  .NET频道Array
=end

ARGF

我们在test.rb里写如下代码:

while line = ARGF.getsprint line
end

在命令行里执行得到如下结果

c:\studyruby>test.rb cnblogslink.txt cnblogslink2.txt
社区
新闻
社区
新闻
招聘
博问
小组
闪存
网摘
.NET频道
社区
新闻
社区
新闻
招聘
博问
小组
闪存
网摘
.NET频道

3、文件信息查询

#文件是否存在
p File::exists?( "cnblogslink.txt" ) # => true#是否是文件
p File.file?( "cnblogslink.txt" ) # => true#是否是目录
p File::directory?( "c:/ruby" ) # => true
p File::directory?( "cnblogslink.txt" ) # => false#文件权限
p File.readable?( "cnblogslink.txt" ) # => true
p File.writable?( "cnblogslink.txt" ) # => true
p File.executable?( "cnblogslink.txt" ) # => false#是否是零长度
p File.zero?( "cnblogslink.txt" ) # => false#文件大小 bytes
p File.size?( "cnblogslink.txt" ) # => 74
p File.size( "cnblogslink.txt" ) # => 74#文件或文件夹
p File::ftype( "cnblogslink.txt" ) # => "file"#文件创建、修改、最后一次存取时间
p File::ctime( "cnblogslink.txt" ) # => Sat Sep 19 08:05:07 +0800 2009
p File::mtime( "cnblogslink.txt" ) # => Sat Sep 19 08:06:34 +0800 2009
p File::atime( "cnblogslink.txt" ) # => Sat Sep 19 08:05:07 +0800 2009

4、查找文件

puts "查找目录下所有文件及文件夹" 
Dir["c:/ruby/*"].each {|x| puts x
} puts "条件查询" 
Dir.foreach('c:/ruby') { |x| puts x if x != "." && x != ".."
}puts "查找某一类型文件"
Dir["*.rb"].each {|x| puts x}puts "Open 查询"
Dir.open('c:/ruby') { |d| d.grep /l/ }.each{|x| puts x}puts "---------------------------"      
Dir.open('c:/ruby') { |d| d.each { |x| puts x } }puts "正则表达式查询"
Dir["c:/ruby/ruby/[rs]*"].each{|x| puts x} puts "------------------------"
Dir["c:/ruby/[^s]*"].each{|x| puts x}puts "------------------------"    
Dir["c:/ruby/{ruby,li}*"].each{|x| puts x} puts "------------------------"    
Dir["c:/ruby/?b*"].each{|x| puts x}        puts "查找目录及子目录的文件"
require 'find'     
Find.find('./') { |path| puts path }

以上内容得到以下输出:

>ruby test.rb
查找目录下所有文件及文件夹
c:/ruby/bin
c:/ruby/ChangeLog.txt
c:/ruby/doc
c:/ruby/lib
c:/ruby/LICENSE.txt
c:/ruby/man
c:/ruby/MANIFEST
c:/ruby/misc
c:/ruby/README.1st
c:/ruby/ReleaseNotes.txt
c:/ruby/ruby.ico
c:/ruby/rubyopt.del
c:/ruby/rubyw.ico
c:/ruby/samples
c:/ruby/scite
c:/ruby/share
c:/ruby/src
c:/ruby/uninstall.exe
条件查询
bin
ChangeLog.txt
doc
lib
LICENSE.txt
man
MANIFEST
misc
README.1st
ReleaseNotes.txt
ruby.ico
rubyopt.del
rubyw.ico
samples
scite
share
src
uninstall.exe
查找某一类型文件
test.rb
test2.rb
Open 查询
lib
ReleaseNotes.txt
rubyopt.del
samples
uninstall.exe
---------------------------
.
..
bin
ChangeLog.txt
doc
lib
LICENSE.txt
man
MANIFEST
misc
README.1st
ReleaseNotes.txt
ruby.ico
rubyopt.del
rubyw.ico
samples
scite
share
src
uninstall.exe
正则表达式查询
------------------------
c:/ruby/bin
c:/ruby/ChangeLog.txt
c:/ruby/doc
c:/ruby/lib
c:/ruby/LICENSE.txt
c:/ruby/man
c:/ruby/MANIFEST
c:/ruby/misc
c:/ruby/README.1st
c:/ruby/ReleaseNotes.txt
c:/ruby/ruby.ico
c:/ruby/rubyopt.del
c:/ruby/rubyw.ico
c:/ruby/uninstall.exe
------------------------
c:/ruby/ruby.ico
c:/ruby/rubyopt.del
c:/ruby/rubyw.ico
c:/ruby/lib
c:/ruby/LICENSE.txt
------------------------
查找目录记子目录的文件
./
./test2.rb
./test2
./test2/test2.rb
./test2/test.rb
./test1
./test.rb
./output
./films.txt
./cnblogslink2.txt
./cnblogslink.txt
./beans.txt
>Exit code: 0

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

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

相关文章

如何用全球顶级名画,成为全行业最令人羡慕的人?

▲ 点击查看马克思曾说&#xff1a;“如果你想得到艺术的享受&#xff0c;那你就必须是一个有艺术修养的人。”假如现在有下面两幅画&#xff0c;站在艺术的角度上&#xff0c;你会选择哪个呢&#xff1f;或者我们可以换一个问法&#xff1a;哪一种猫才是最符合你心中标准的猫&…

电脑启动后黑屏只有鼠标_电脑加装固态硬盘后出现黑屏或蓝屏解决方案

以下内容以本人遇到的真实问题为例&#xff0c;从找到加装固态硬盘后出现黑屏及蓝屏的原因&#xff0c;到成功解决问题&#xff0c;请各位看官听我娓娓道来&#xff0c;也希望为遇到同样问题的广大网友拨云见日&#xff0c;废话不多说&#xff0c;走起……一、问题描述:1. 背景…

mysql数据库的备份和二进制日志恢复

mysql备份和bin-log日志备份数据&#xff1a; mysqldimp -uroot -p test -l -F /tmp/test.sql-l 读锁-F即flush logs, 可以重新生成的日志文件&#xff0c;当然包括log-bin日志。查看bin-log日志用 mysql>show master status;清空表数据 truncate tables;根据二进制bin-log…

2021编程语言排行:C#飙升,Python蝉联榜首

文 | 白开水不加糖出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;IEEE Spectrum 2021 年度编程语言排行榜现已发布。该榜单一年发布一次&#xff0c;今年是其发布的第八年。今年的排行榜包含 55 种语言&#xff0c;其排序综合 8 个重要线上数据源的 11 …

C# 生成私钥和公钥

应该有好多方法&#xff0c;我就用系统自动生成的。 RSACryptoServiceProvider RSAalg new RSACryptoServiceProvider(); stringstr_Private_Key Convert.ToBase64String(RSAalg.ExportCspBlob(true)); stringstr_Public_Key Convert.ToBase64String(RSAalg.ExportCspBlob(f…

GitHub中教程资源 | 共21个图形绘制教程

一边学习&#xff0c;一边总结&#xff0c;一边分享&#xff01; 写在前面 今天分享在GitHub中找到的教程资源&#xff0c;此教程是来自iMeta期刊及“农心生信工作室”的作品。发表在GitHub中&#xff0c;大家可以自行下载。 包含了21个图形的绘制&#xff0c;我大体看了一下…

php 中 t怎么打开,怎么在PHP项目中实现一个explort() 功能

怎么在PHP项目中实现一个explort() 功能发布时间&#xff1a;2020-12-28 16:36:06来源&#xff1a;亿速云阅读&#xff1a;108作者&#xff1a;Leah这篇文章给大家介绍怎么在PHP项目中实现一个explort() 功能&#xff0c;内容非常详细&#xff0c;感兴趣的小伙伴们可以参考借鉴…

随便想想

不知不觉&#xff0c;毕业已经有三个多月了&#xff0c;工作也三个多月了。有时候静下心来想想&#xff0c;时间过得真快&#xff0c;挺怀念大学三年里所过的每分每秒。从小学到大学&#xff0c;有过各种各样的记忆&#xff0c;而大学的记忆留给我的是最宝贵。在这三年里&#…

盘点那些欺骗我感情的数学定理

全世界只有3.14 % 的人关注了爆炸吧知识一直以来&#xff0c;关于定理、公式的命名&#xff0c;人们都倾向于用数学家的名字命名&#xff0c;不仅简单方便&#xff0c;还可以达到纪念创立人的效果。不过&#xff0c;也不是每一次都这么好的&#xff0c;超模君发现&#xff0c;有…

linux启动mysql_Linux服务器安装Mysql教程

最开始用服务器的时候&#xff0c;也是对这些环境的安装操作极其陌生&#xff0c;找了很多方式&#xff0c;写这边文章就是为了让更少的童鞋走弯路&#xff0c;下面我们看看具体的操作流程。1、首先关闭linux的防火墙&#xff0c;执行命令chkconfig iptables off2、从mysql官网…

人的一生能交多少朋友?

http://blog.sina.com.cn/s/blog_6071466501010ssw.html友谊是人生中最宝贵的精神财富之一。许多人都认为&#xff0c;人的一生交的朋友越多越好。但是最近科学研究表明&#xff0c;人类的好友圈子不是想有多大就有多大&#xff0c;因为人的交友能力是有极限的。著名的邓巴定律…

写给80后,我们的人生才刚刚开始

今天看到一个老同学发朋友圈&#xff0c;才醒起她很久没有写公众号文章了。再加上其他诱因&#xff0c;于是有了这篇文章&#xff0c;希望这碗鸡汤能激发一下她和同是80年后的朋友们。我是和她同一时期开始写公众号文章的。除此之外&#xff1a;1。在那热血青春时代&#xff0c…

python extended,python list中的append 与 extended 的区别

append:说明&#xff1a;append() 方法用于在列表末尾添加新的对象。使用方法&#xff1a; list.append(obj) # obj 添加到列表末尾的对象&#xff1b;该方法无返回值&#xff0c;但是会修改原来的列表。extend:说明&#xff1a;extend() 函数用于在列表末尾一次性追加另一个序…

突破SA的各种困难

方法1:查询分离器连接后第一步执行&#xff1a;use master 第二步执行&#xff1a;sp_dropextendedproc xp_cmdshell 然后按F5键命令执行完毕三.常见情况恢复执行xp_cmdshell.1 未能找到存储过程master..xpcmdshell.恢复方法&#xff1a;查询分离器连接后,第一步执行:EXEC sp_a…

黑人抬棺,虽迟但到

1 脑子里有声音了▼2 人活着可太难了▼3 受疫情影响&#xff0c;汤姆哈迪在家种菜了▼4 4岁小朋友的涂鸦对颜色搭配的天赋简直点满▼5 白天哈哈哈哈哈哈哈哈晚上呜呜呜呜呜呜呜呜▼6 反正是最后的晚餐了通融一下嘛▼7 喵娘报恩▼你点的每个赞&#xff0c;我都认真当成了…

本地搭建K8s环境,并配置Ingress代理(1)

书接上文&#xff0c;上回说到了在Linux系统搭建K8s环境&#xff0c;通过脚本一键处理&#xff0c;具体可参考《入门K8s&#xff1a;一键脚本搭建Linux服务器集群》。虽然Linux系统很不错&#xff0c;而且也推荐都买一个做练习&#xff0c;但是不可避免的会遇到一些小问题&…

简单链接Simplelink 传感器标签SensorTag

2019独角兽企业重金招聘Python工程师标准>>> 传感器标签现在支持iBeacon技术 为了让你的传感器标签升级到与iBeancon技术兼容&#xff0c;你需要和苹果公司签约一个iBeacon许可&#xff0c;然后你可以请求访问软件&#xff0c;通过点击这里http://www.ti.com/tool/s…

苹果手机透明桌面_原来苹果手机辨别真假很容易!查看桌面1个图标,就能轻松分辨...

要说哪个品牌的手机贵&#xff0c;大家想到的肯定是苹果手机啦&#xff0c;所以说很多朋友都害怕自己买到假货。其实分辨苹果手机是不是正品很容易&#xff0c;只需查看桌面1个图标&#xff0c;就能辨别出手机的真假哦。一、从细节入手1.桌面时钟不知道大家发现没&#xff0c;i…

Linux内核里的“智能指针” (续)

在上一篇文章《Linux内核里的智能指针》里介绍了Linux内核如何使用引用计数来更加安全的管理内存&#xff0c;本文承接前篇&#xff0c;主要介绍几点使用kref时的注意事项。 Linux内核文档kref.txt罗列了三条规则&#xff0c;我们在使用kref时必须遵守。 规则一&#xff1a; If…

Linux主机名那点事儿

Linux主机名那点事儿和windows一样&#xff0c;liunx同样有自己的主机名&#xff0c;主要用于识别机器和远成访问。事儿一、/etc/hosts文件主机和IP配置文件该文件其实就是告诉本机哪些域名对应那些ip&#xff0c;那些主机名对应哪些ip&#xff0c;因为ip地址难以记忆&#xff…