如何读取.rb文件的内容?

时间:2012-10-29 17:54:44

标签: ruby file-io

我可以使用Ruby读取任何文件(v1.9.3-p125)但是在使用以下命令时遇到问题:

IO.read("myself.rb")
File.open("myself.rb","rb")

在“* .rb”文件中执行此操作时,将返回空白字符串。如果我重命名文件“myself.rabit”它可以工作。

如何绕过ruby源文件的明显过滤?

2 个答案:

答案 0 :(得分:2)

没有这样的过滤,你没有遇到你认为你遇到的错误。

例如,这可以作为存储在.rb文件中的完整Ruby程序正常工作:

puts File.open(__FILE__).read

答案 1 :(得分:0)

您已经得到了正确答案:使用__FILE__

当您想要阅读主文件时,还有另一种可能性。

请参阅以下代码:

p DATA
p DATA.pos
p DATA.read

__END__
This is text after __END__

当你执行它时,你得到

#<File:test.rb>
50
"This is text after __END__"

DATA是一个文件句柄,位于脚本结尾(__END__)之后 - 在我的示例中,它位于第50位。

我经常使用此DATA将数据存储在“here-document”中。

您可以将此可能性用于您的使用,只需将位置设置为文件开始。

DATA.pos= 0
puts DATA.read

两个限制:

  • 仅适用于主文件,不适用于任何文件。
  • __END__是强制性的。