【问题标题】:How do I read a file in Ruby using a specific script?如何使用特定脚本在 Ruby 中读取文件?
【发布时间】:2013-04-27 02:45:48
【问题描述】:

我正在编写一系列关于如何用 Ruby 编写代码的教程。我想用这个公式读取一个 .txt 文件:

filename = ARGV.first

prompt = "> "
txt = File.open(filename)

puts "Here's your file: #{filename}"
puts txt.read()

puts "I'll also ask you to type it again:"
print prompt
file_again = STDIN.gets.chomp()

txt_again = File.open(file_again)

puts txt_again.read()

文本文件内容如下:

This is stuff I typed into a file. It is really cool stuff.
Lots and lots of fun to have in here.

文本文件的名称是ex15_sample.txt。我尝试了上面的公式,但似乎没有任何效果。我很难理解如何同时使用ARGVSTDIN.gets.chomp

我该怎么办?我要求您使用上面的公式;这东西有点混乱,所以现在,只需使用上面的公式。

【问题讨论】:

  • “特定脚本”是什么意思?你的意思是“编码”吗?什么是“公式”?
  • 你是如何运行程序的:你到底在命令行输入什么?当您说似乎没有任何效果时,您究竟是什么意思:是否有错误消息?
  • @Jorg 看,关于我在做什么,我不知道很多术语。我是一个初学者......我只知道非常基本的东西,所以所有这些对我来说都是全新的。但是要回答您的问题:由于我的问题已被编辑,因此我不知道特定脚本是什么意思。我认为编码我可能正在尝试做的事情。我说的公式就像说“ARGV.first, etc.. etc....就像我说的那样,全新的。
  • @FMc 好吧,它说“filename = ARGV.first”我用“ex15_sample.txt”填写文件名,它一直给我错误消息。所以是的,每次我尝试做一些新的事情时,我都会从阴阳中得到错误信息。
  • @Jorg 我所说的具体脚本不是指,读取“filename = ARGV.first, etc...etc..”的大脚本​​。抱歉,我忘记了上面的主要问题。

标签: ruby text-files stdin argv


【解决方案1】:

脚本有效。你没有解释你是如何尝试运行脚本或你看到了什么错误,所以有点难以帮助你。

如果您在与脚本相同的目录中有一个名为 ex15_sample.txt 的文本文件(我们称之为 script.rb),并且如果您正确设置了 Ruby,那么如果您运行它

$ ruby​​ script.rb ex15_sample.txt

一切正常。

如果您尝试将第一行更改为始终使用ex15_sample.txt,请务必将其放在引号中:

filename = "ex15_sample.txt" # Without the quotes, you'll get an error.

同样,如果不确切知道您是如何运行脚本或遇到什么错误,很难为您提供帮助。

更新:我似乎您的问题是您不清楚如何运行 Ruby 脚本。最简单的方法是在系统的命令提示符下输入ruby,然后输入一个空格,然后输入包含 Ruby 脚本的文件名。如果您的脚本位于名为 script.rb 的文件中,您将键入 ruby script.rb。如果您的脚本位于具有不同名称的文件中,这将不起作用。如果脚本位于名为read-a-file.rb 的文件中,则需要输入ruby read-a-file.rb

这个特定的脚本需要在文件名之后有一个命令行参数。如果您要读取的文本文件位于名为ex15_sample.txt 的文件中,那么您需要在脚本名称之后键入它。在前面的示例中,命令将变为ruby read-a-file.rb ex15_sample.txt。这仅在文件位于同一目录(也称为文件夹)中时才有效。

【讨论】:

  • 好的,让我试试吧,我会用我的错误信息回复你。
  • 好吧,让我问你这个问题。当你说,如果你用 $ ruby​​ script.rb ex15_sample.txt 运行它应该可以工作,你到底是什么意思?你的意思是从命令提示符?例如:我输入 irb,然后输入你在上面输入的内容,然后我应该没有收到错误消息。也许这就是问题所在……也许我不知道该怎么做。基本上我只是想让 Ruby 读取那个 .txt 文件,这就是我真正要做的。
  • 令我失望的是,到目前为止,我对任何教程都没有任何问题。我不明白。
  • 按原样使用脚本,尝试从ARGV 获取文件名,在irb 中没有任何意义。如果要在名为 script.rb 的文件中运行脚本,则应键入 ruby script.rb ex15_sample.txt 而不是在命令提示符处键入 irb。如果你只是想让 Ruby 从 irb 中读取文件,你可以这样做 File.read('ex15_sample.txt').
  • 嗯...让我在命令提示符下输入 ruby​​ script.rb ex15_sample.txt 看看会发生什么。
猜你喜欢
  • 2015-05-01
  • 2016-12-13
  • 2023-04-02
  • 2015-06-14
  • 1970-01-01
  • 2021-03-25
  • 2014-05-24
  • 2016-07-25
  • 1970-01-01
相关资源
最近更新 更多