`

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用法

    python初学过程中,遇到的sys.argv【1】使用方法疑难记录

    关于main函数的(int_argc,char_argv[ ])

    main(int argc,char *argv[ ]) argv为指针的指针 argc为整数 char **argv or: char *argv[] or: char argv[][] main()括号内是固定的写法。 下面给出一个例子来理解这两个参数的用法: 假设程序的名称为prog, 当只...

    argc与argv的用法

    argc与argv的用法,自己上机用行一下就可以了。

    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()函数, 可以根据自己的爱好把它放在程序的某 个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 在哪个地方, 以下几点说明都...

    cross-argv:process.argv的跨平台标准化

    交叉argv process.argv的跨平台规范化。 npm install cross-argv基本上使带有单引号字符串的参数在任何地方都可以工作到node app.js 'foo bar' ,否则在cmd.exe使用时可能会引起问题。用法const xargv = require ( '...

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

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

    node-child-io:超时执行 child_process

    var io = require('child-io').IO([argv]); io.exec(func | file, [options]); argv (数组) 当 child_process 是 .fork() 时使用的进程参数。 func (函数|字符串) | file (字符串) 执行原始功能。 ...

    php-argv:在命令行中处理 php argv 的库

    $ phpArgv = new \ CodeCounter \ PHPArgv \ Argv (); // set version, desc $ phpArgv -> version ( '1.0.0' ) -> desc ( 'Some description for this command' ); // create default module(sub command

    ex_argv.rar_in

    Index of current file in argv.Number of arguments in argv.

    python3中sys.argv的实例用法

    sys.argv就是一个从程序外部获取参数的,这个外部指的是我们执行python文件时后面追加的参数,例如:python3 test.py test1 test2 从外部获取的参数可以是单个也可以是多个,获取的是一个列表(list),也就是说sys....

    Python sys.argv用法实例

    sys.argv变量是一个字符串的列表。特别地,sys.argv包含了命令行参数 的列表,即使用命令行传递给你的程序的参数。 这里,当我们执行python using_sys.py we are arguments的时候,我们使用python命令运行using_sys....

    python命令行参数sys.argv使用示例

    复制代码 代码如下:#diff.py#!...file1 = sys.argv[1]file2 = sys.argv[2] list1 = {}for line in open(file1): list1[line.split()[0]] = 1 for line in open(file2): key = line.split()[0] if key

    Python argv用法详解

    主要介绍了Python argv用法详解的相关资料,涉及到python argv相关知识,需要的朋友可以参考下

    前端开源库-spm-argv

    前端开源库-spm-argvSPM argv,SPM的argv解析器。

    python中sys.argv函数精简概括

    sys.argv函数通常用来读取命令行参数,其中保存了程序的文件名和命令行参数,读入的参数以元组的形式保存。下面以sys.argv[0],sys.argv[1],sys.argv[1:]进行具体分析,你也可以做其他尝试。 首先打开一个新的文件...

    使用基于AFL的argv的Fuzzer-C/C++开发

    使用基于AFL的argv运行的Fuzzer Yuan-fuzz使用基于AFL的argv运行的Fuzzer如何使用Use -h --help来了解目标程序选项,并使用它编写XML文件来帮助进行模糊测试。 我在这里给出一些XML示例,也许可以帮助编写XML文件。 ...

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

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

    对python中的argv和argc使用详解

    为什么argv中第一个,即index=0的内容就是文件名? python中argc是用什么实现的? 概念解释 argc:argument counter,命令行参数个数 argv:argument vector,命令行参数向量(内容) 通过代码理解含义 创建一个文件arg...

    AES 源代码

    // 参数:argc等于main主函数argc参数,argv指向main主函数argv参数 // 返回:若参数合法返回true,否则返回false // 备注:简单的入口参数校验 /***************************************************************...

Global site tag (gtag.js) - Google Analytics