Ruby IO之ARGF,ARGV

在使用ruby腳本時, 經常需要用到在參數中給出文件名,然後再腳本中可以處理該文件的功能,或者說從STDIN獲取輸入,然後處理得到某個結果。 而ruby爲開發者處理類似的問題提供了一個很好的解決方法 --- ARGF

“ARGF is a stream designed for use in scripts that process files given as command-line arguments or passed in via STDIN.”

[size=medium][b]ARGF[/b][/size]
ARGF.each { |line|
puts line
}


上面就是根據參數,找到文件,打印出文件內容所需的全部代碼。

[img]http://dl2.iteye.com/upload/attachment/0091/4596/bb604d2e-5479-323a-b52c-62810607a219.png[/img]

該腳本甚至可以接受多個文件名參數,按順序一個一個的處理文件。

另外,該代碼還有一個附贈的語法糖,如果沒有給參數,則默認等待STDIN的輸入,效果如下:

[img]http://dl2.iteye.com/upload/attachment/0091/4598/b5e5ab09-69dd-3b73-8160-e0a80f834041.png[/img]

[size=medium][b]ARGV[/b][/size]
在運行ruby腳本的時候,所有的參數會以Array的形式保存到ARGV中。ARGF則會根據ARGV中的值一個一個的處理,每處理一個就從ARGV中移除一個,直到處理完所有的值。

puts ARGV.inspect

ARGF.each { |line|
puts line
puts ARGV.inspect
}


[img]http://dl2.iteye.com/upload/attachment/0091/4602/dd56eb91-8363-302e-a1d1-c9ebb78c048c.png[/img]

有了這層理解,就可以很容易的爲腳本加一些option,然後從ARGV中取出,根據option去做特殊的處理。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章