'没有这样的文件或目录'在一个无法访问的文件上

时间:2015-05-19 02:02:47

标签: ruby powershell

我正在编写一个小型Ruby脚本,对another script of mine生成的名称列表进行统计分析。

当我使用此命令运行它时:

ruby [first script] [args] | ruby -- [second script] _

它会抛出此错误:

./name_gen_test.rb:15:in `gets': No such file or directory @ rb_sysopen - _ (Errno:ENOENT)
        from .name_gen_test.rb:15:in `gets'
        from .name_gen_test.rb:15:in `<main>'

(为拼写错误道歉; Powershell不会让我复制/粘贴)

这是第15行:

until (cur_line = gets).nil?

然后是循环体,其余代码等等。但是,如果我把这一行:

gets

作为第一行,我得到了同样的错误。事实上,如果我完全清空文件并且除了调用gets之外什么都没有,我会收到文件&#39; _&#39;无法找到。

我怎样才能理解&#39; _&#39;是一个命令行参数而要读取的文件,我猜?为什么gets不像我期望的那样工作(即从标准输入读取)?

我用Powershell运行它,如果这有所不同。

对不起,如果这是重复的话;只需谷歌搜索错误消息就会导致十几个不同的问题和十几个不同的解决方案,这些解决方案都不适用,我也无法弄清楚如何将此问题纳入Google查询。

1 个答案:

答案 0 :(得分:1)

STDIN.gets会做你想要的。默认情况下,gets(几乎)等同于ARGF.gets。如果没有ARGSARGF会从标准输入读取,如果存在,则会从与ARGS对应的文件中读取。