重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
ruby遍历文件内容,基本思路是逐行读取逐行打印,也是比较普遍的方法:
10年专注成都网站制作,成都定制网站,个人网站制作服务,为大家分享网站制作知识、方案,网站设计流程、步骤,成功服务上千家企业。为您提供网站建设,网站制作,网页设计及定制高端网站建设服务,专注于成都定制网站,高端网页制作,对成都湿喷机等多个行业,拥有丰富设计经验。
#!/usr/bin/env ruby #Encoding:utf8 file = File.open("/tmp/abc.txt") file.each_line do |line| print line end file.close
直接写成块,好处是无需显性的关闭文件句柄。
File.open('/tmp/abc.txt') do |file| file.each_line do |line| print line end end
另外一种写法,一次性读取一次性打印,相对耗费更多内存,小文件场合比上面的方法更快。不推荐操作大文件。
#!/usr/bin/env ruby # Encoding:utf8 wholefile = File.read("/tmp/abc.txt") print wholefile
小结
1、第一种方法比较像sed,awk之类的流编辑器,第二种方法跟cat一样暴力。
2、File.read不需要显式关闭文件句柄。
扩展
在打开文件前,判断文件是否存在
#!/usr/bin/env ruby # Encoding: utf8 if File.exist?("/tmp/abc.txt") file = File.open("/tmp/abc.txt") file.each_line do |line| print line end file.close else puts "error:file not exist" end
逐行读取,将文件名作为ruby脚本的参数
#!/usr/bin/env ruby # Encoding: utf8 filename = ARGV[0] if File.exist?(filename) file = File.open(filename) file.each_line do |line| print line end file.close else puts "error:file not exist" end