在Ruby中打开文本文件

时间:2017-04-20 00:29:53

标签: ruby

我正在尝试创建一个程序来计算我创建的文本文件中的单词频率。我有一个标题为moms_letter.txt的文本文件,这是我的代码:

word_count = {}

File.open("moms_letter.txt", "r") do |f|
    f.each_line do |line|
        words = line.split(' ').each do |word|
            word_count[word] += 1 if word_count.has_key? word
            word_count[word] = 1 if not word_count.has_key? word
        end
    end
end

puts word_count

我得到的问题是当我去运行文件时,我收到错误:

there is no such file or directory - moms_letter.txt (Errno: : ENOENT)

当我创建文本文件时,不太确定为什么会这样。 任何帮助表示赞赏。

我也是Ruby的新手,所以感谢耐心。

2 个答案:

答案 0 :(得分:1)

您必须从moms_letter.txt文件所在的目录之外执行您的程序。您需要使用绝对路径来打开文件。或者,始终从.txt所在的目录执行您的程序。因此,不要使用"moms_letter.txt""complete/path/to/file/moms_letter.txt"一起使用。

答案 1 :(得分:0)

我也是Ruby的新手,但最近有一些文本文件。这似乎是一个显而易见的问题,但是您尝试在与.rb文件相同的目录中打开的文本文件是什么?否则,您需要包含相对路径。

为了排查故障,请尝试File.new("temp.txt", "w"),然后File.open("temp.txt", "r"),看看是否有效。然后,您将知道您的代码或您尝试访问的txt文件是否存在问题。

同样使用File.exists?("moms_letter.txt")将帮助您确定是否可以从.rb脚本中访问该文件。

希望有所帮助!