ruby filename路径到字符串错误

时间:2015-10-30 10:35:10

标签: ruby filepath

这是我的代码:

file = File.open('result.txt', 'w+').read

path = Dir[ENV['HOME'] + '/Desktop/Test/*.txt']

file.puts "this is a #{path} test: "

出现错误:

C:/Users/User/RubymineProjects/Comparison/test.rb:5:in `<top (required)>': private method `puts' called for "":String (NoMethodError)
    from -e:1:in `load'
    from -e:1:in `<main>'

我的预期结果是:

this is a C:/Users/User/Desktop/Test/new_1.txt test: 

我试过这个:

puts "this is a #{path[0]} test: "

实现了我的目标,但是一旦file.puts它再次出现同样的错误。

1 个答案:

答案 0 :(得分:0)

当您在此处执行Folder时,您将方法file.puts发送到现在存储在变量#puts中的字符串对象。这是因为file方法返回一个字符串。因此,在第一行,File#read获取file的内容,然后将其存储在变量result.txt中puts file. Then you're calling String#puts`是一个私有方法,所以你不能像上面代码中那样使用它。

如果您打算撰写结果on that string. And,那么您需要以这种方式使用this is a C:/Users/User/Desktop/Test/new_1.txt test:方法:

File.open

或者,如果您更喜欢命令式样式而不是块样式:

File.open('result.txt', 'w+') do |file|
  path = Dir[ENV['HOME'] + '/Desktop/Test/*.txt']
  file.puts "this is a #{path} test: "
  # whatever else needs to be written goes here
end