试图在Ruby中打开文件 - 获取TypeError:无法将String转换为Integer

时间:2012-06-19 21:06:51

标签: ruby file types

不确定这里会发生什么,或者在这种情况下可能是整数。这是代码:

def build_array_from_file(filename)
    contents = []
    File.read(File.expand_path('lib/project_euler/' + filename), 'r') do |file|
      while line = file.get
        contents << line
      end
    end
    contents
  end

filename是一个字符串,我已经检查过以确保路径有效。

有什么想法?感谢。

2 个答案:

答案 0 :(得分:7)

File.read没有模式或阻止的第二个参数,即File.open

contents_string = File.read(File.expand_path('lib/project_euler/' + filename))

请注意,您也可以写:

contents = File.open(path).lines # returns a lazy enumerator, keeps the file open

或者:

contents = File.readlines(path) # returns an array, the file is closed.

答案 1 :(得分:1)

File.read不需要r模式 - 您已经请求&#39;阅读&#39;在File.read。参数fo File.read是 - 在文件名之后 - 偏移量和长度(这是错误消息中预期整数的原因)。

您可以将模式设为File.read(filename, :mode => 'r')如果您需要模式rbr:utf-8(但还有encoding - 选项),这可能会很有用。