ruby 遍历文件
admin
2023-02-15 12:20:04
0

ruby遍历文件内容,基本思路是逐行读取逐行打印,也是比较普遍的方法:

#!/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




相关内容

热门资讯

即使中东冲突今天停止,欧盟在未... 新华社布鲁塞尔5月5日电(记者康逸)欧盟能源委员丹·约根森5日警告说,由于伊朗战事以及霍尔木兹海峡遭...
原创 A... 2026 年 4 月,知名产业链分析师郭明錤发布重磅报告:OpenAI正加速研发自研智能手机,以 A...
原创 怎... 你是不是也有过这样的疑惑:明明换了新手机,套餐也升级了,但总感觉网速没快到哪儿去,心里直犯嘀咕——我...
聚力未来通信!成都6G联盟成立 4月28日下午,成都6G联盟成立大会在成都民营经济发展促进中心举行。产业链上下游企业代表、行业专家学...
累计亏损800亿美元,Meta... IT之家 5 月 2 日消息,当地时间 5 月 1 日,据《财富》杂志报道,Meta 第一季度业绩本...
万鑫AI:AI交易大模型驱动下... 在全球金融市场进入高波动、高联动与高智能化并行发展的新阶段后,交易体系的竞争逻辑正在发生明显变化,传...
原创 赛... 2026 年 5 月 5 日,赛力斯股价突发暴跌,盘中跌幅超 6%,市值单日蒸发超百亿,# 赛力斯跌...
杭州博洲电器取得贴片电阻测试治... 国家知识产权局信息显示,杭州博洲电器有限公司取得一项名为“一种贴片电阻测试治具”的专利,授权公告号C...
智聚当下 共启新章——京口区举... 为抢抓人工智能发展新机遇,加快培育新质生产力,推动区域产业数智化转型与高质量发展,4月30日下午,京...
佐林电器取得可调式永磁阻尼器专... 国家知识产权局信息显示,上海佐林电器有限公司取得一项名为“一种可调式永磁阻尼器”的专利,授权公告号C...