这个是逃避我(没有双关语意)。
第一种方法看起来就像我想要的那样,只是我想把它写到文件中。
def write_dir_two
Dir.chdir("/vagrant/TestRails/Music")
Dir.glob('*') do |file|
if File.ftype(file) == "directory"
puts Dir.entries(file)
end
end
end
现在我无法让新线工作。我尝试了插值,创建了一个"分隔符"变量,即separator = "\n"
,以及其他一些技巧,但它不行。似乎很容易完成任务,并在其他情况下完成。我把所有非工作解决方案都排除了,但基本上我正在尝试做这样的事情 - music.write(Dir.entries("#{file}\n"))
。换句话说,每个文件都有自己的行。我也试过file + "\n"
,但也失败了。
def write_dir_one
music = File.new("music_2", 'w')
Dir.chdir("/vagrant/TestRails/Music")
Dir.glob('*') do |file|
if File.ftype(file) == "directory"
music.write(Dir.entries(file))
end
end
end
puts
只是将它格式化到屏幕上做得很好。
编辑:我没有意识到我可以使用file.puts
代替file.write
。这有效,但如果其他人有不同的,更好的方式,我会暂时保持开放状态。
答案 0 :(得分:1)
Dir#entries
返回指定目录中所有文件的数组,因此执行Dir.entries("#{file}\n")
失败,因为您没有具有该名称的目录,并且末尾有换行符。 File#write
不起作用的原因是因为它只是在非字符串上调用to_s
以在输出它之前将其转换为字符串并且File#puts
有效,因为它具体说明了
如果使用数组参数调用,则将每个元素写入新行。
因此,如果您想在不使用puts
的情况下执行此操作,则可以调用:
music.write(Dir.entries(file).join("\n"))