`

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.”

ARGF
ARGF.each { |line|
  puts line
}


上面就是根据参数,找到文件,打印出文件内容所需的全部代码。



该脚本甚至可以接受多个文件名参数,按顺序一个一个的处理文件。

另外,该代码还有一个附赠的语法糖,如果没有给参数,则默认等待STDIN的输入,效果如下:



ARGV
在运行ruby脚本的时候,所有的参数会以Array的形式保存到ARGV中。ARGF则会根据ARGV中的值一个一个的处理,每处理一个就从ARGV中移除一个,直到处理完所有的值。
puts ARGV.inspect

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




有了这层理解,就可以很容易的为脚本加一些option,然后从ARGV中取出,根据option去做特殊的处理。





  • 大小: 12.8 KB
  • 大小: 12.8 KB
  • 大小: 14.1 KB
  • 大小: 26.6 KB
  • 大小: 40.1 KB
分享到:
评论

相关推荐

    python sys.argv用法

    `sys.argv` 是 Python 标准库中的一个变量,它是一个列表,包含了运行 Python 脚本时在命令行中传递的所有参数。当你在命令行中执行一个 Python 程序时,`sys.argv[0]` 总是表示脚本的名称,而 `sys.argv[1]` 及其...

    Ruby-一个Ruby的例子

    首先,Ruby的面向对象特性是其核心之一。在Ruby中,一切都是对象,包括基本数据类型如数字、字符串和布尔值。例如,当你在Ruby中写下"hello",它实际上是一个String对象,你可以调用方法在它上面操作,如`"hello"....

    argc与argv的用法

    在C语言和C++编程中,`argc`和`argv`是两个非常基础且重要的概念,它们用于在程序启动时接收命令行参数。当你在命令行界面运行一个程序,并向其传递参数时,这些参数会被程序通过`argc`和`argv`捕获。下面将详细解释...

    Ruby-将Ruby变成一个多功能命令行实用程序

    Ruby中的`ARGV`数组可以捕获命令行传递的参数,而`gets`方法则用于读取用户输入的控制台数据。 1. **基础架构**: 创建一个Ruby CLI工具时,首先定义一个主入口文件,例如`bin/main.rb`。在这个文件中,我们可以...

    int main(int argc,char *argv[])函数的举例解析

    此函数的结构和功能是程序员必须掌握的基础知识之一。下面将对这一主题进行深入解析,以帮助读者更好地理解和应用。 ### `int main(int argc, char *argv[])`函数详解 #### 函数原型与参数解释 `int main(int ...

    Programming-Ruby-1.9.pdf

    ### Ruby编程语言基础知识点概述 #### 一、书籍简介与背景 《Programming Ruby 1.9》是由Dave Thomas...该书通过清晰的讲解和丰富的示例,帮助读者掌握Ruby编程的核心概念和技术,是学习Ruby不可或缺的经典教材之一。

    int _tmain(int argc, _TCHAR argv[]) 函数

    int _tmain(int argc, _TCHAR argv[]) int _tmain(int argc, _TCHAR argv[])

    XXXX.rar_argc argv_c语言 命令 参数 argc_argv_www.xxxx_xxxxerr_yes

    C语言编程宝点之XXXX main()主函数 每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某 个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 在哪个地方, 以下几点说明都...

    ex_argv.rar_in

    标题“ex_argv.rar_in”和描述“Index of current file in argv. Number of arguments in argv.”提到了一个关于命令行参数处理的概念,特别是涉及到C语言编程中的`argv`数组。在这个场景下,`argv`是程序启动时由...

    Ruby Notes For Professionals RubyNotesForProfessionals.pdf

    ### Ruby Notes for Professionals #### 知识点概览 本篇文档主要涵盖了Ruby语言的基础到进阶的关键概念和技术,旨在帮助读者快速上手并深入理解Ruby。内容包括Ruby语言的基本介绍、类型转换(Casting)、运算符、...

    C++程序中main(int argc, char *argv[])函数的参数意义

    在vs中编写C++程序时,可以往主函数里传递两个参数:main(int argc,char *argv[])。主函数不能被其它函数调用,在window操作系统下调用者是。 测试程序如下所示: #include stdafx.h #include iostream using ...

    Ruby常用文件操作方法

    五、ARGV和ARGF - ARGV:包含了命令行参数的数组,可以动态添加元素,如`ARGV 。 - ARGF:用于读取命令行参数指定的文件或标准输入,如`ARGF.gets`用于获取文件的下一行内容。 六、文件信息查询 Ruby提供了多种方法...

    高性能网络编程--IO 完成端口

    ### 高性能网络编程——IO完成端口 #### 基本内容概述 本文档主要介绍了高性能网络编程中的一个重要技术——IO完成端口(IOCP)。该技术是Windows平台下的一种高级I/O机制,用于处理大量的并发I/O操作,特别适用于...

    int main(int argc,char argv[ ])

    "int main(int argc,char argv[ ])" 在C语言中,main函数是程序的入口点,main函数的定义方式有多种,但最标准的写法是int main(int argc, char *argv[], char *env[]),其中argc、argv和env三个参数是必不可少的...

    python中sys.argv[]用法详解

    它是连接 Python 脚本与外部世界的桥梁之一,尤其在编写命令行工具或自动化脚本时非常有用。掌握好 `sys.argv[]` 的使用方法,能够极大地提高编程效率和脚本的灵活性。希望本文能够帮助初学者更好地理解和应用这一...

    Linux网络编程之IO复用循环服务器

    ### Linux网络编程之IO复用循环服务器 #### 一、引言 在现代网络应用开发中,服务器的设计面临着越来越高的并发请求处理需求。传统的简单循环服务器每次只能处理一个客户端请求,这种方式显然无法满足高并发场景的...

    前端开源库-spm-argv

    **spm-argv** 是一个专为前端开发设计的开源库,它主要负责解析 SPM(可能是 Software Package Manager 或者 Semantic Package Manager 的缩写)命令行参数。在软件开发中,尤其是命令行工具的使用中,参数解析是必...

    Python argv用法详解

    `sys` 是 Python 的标准库之一,提供了许多与解释器交互的功能,包括获取命令行参数。 #### 三、`argv` 的基本使用方法 1. **导入 `sys` 模块**: ```python import sys ``` 2. **访问 `argv`**: - `sys.argv...

    Ruby-TorS一个命令行的torrent搜索应用

    1. **命令行参数处理**:Ruby的`OptionParser`库或`ARGV`全局数组可以帮助解析命令行参数,根据用户提供的选项进行相应操作。 2. **HTTP请求与解析**:为了与torrent搜索引擎交互,需要使用如`Net::HTTP`库发送HTTP...

Global site tag (gtag.js) - Google Analytics