0

我正在编写一系列关于如何在 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

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

4

1 回答 1

2

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

如果您有一个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. 仅当文件位于同一目录(又名文件夹)中时,这才有效。

于 2013-04-26T17:55:52.867 回答