Ruby 我的程序中的字符串不会保存在文本文件中
我正在写克里斯·派恩的《学会编程》第11章。这个练习要求建立一个播放列表,我需要从每个文件夹中随机挑选几首歌曲。 以下是我写的:Ruby 我的程序中的字符串不会保存在文本文件中,ruby,Ruby,我正在写克里斯·派恩的《学会编程》第11章。这个练习要求建立一个播放列表,我需要从每个文件夹中随机挑选几首歌曲。 以下是我写的: folder = Dir['/Users/M/Music/iTunes/iTunes Media/Music/**'] music_folders= [] folder.each do |f| f = f.split ('/') music_folders.push f[7] end def mix arr arr.each do |aa
folder = Dir['/Users/M/Music/iTunes/iTunes Media/Music/**']
music_folders= []
folder.each do |f|
f = f.split ('/')
music_folders.push f[7]
end
def mix arr
arr.each do |aa|
songs = Dir["/Users/M/Music/iTunes/iTunes Media/Music/#{aa}/**/*.{MP3,mp3}"]
shuffle(songs)
end
end
def shuffle songs
playlist=[]
x = 0
y = 0
count = songs.length
while y<4
x = rand(count)
if songs[x] !='used'
playlist.push songs[x]
songs[x] = 'used'
y= y+1
end
end
puts playlist
end
mix(music_folders)
因此,命令输出提供了我想要的内容,但我不确定如何将它们保存到.txt文件中。有人能帮我吗?谢谢 这将读取比需要复杂一点的文件,并将其写入/tmp/songs.txt
您到底想向文件写入什么?整个音乐文件夹阵列、播放列表或单个项目?我想知道您看到的是哪种输出。没有单一的p、puts或任何其他方法可以打印到屏幕上。虽然返回nil,但shuffle也返回nil。arr.mix方法中的每个都返回原始数组,因此mix返回相同的arr。最后,mixmusic\u文件夹应该返回原始数组。如果您的路径不够长,则该数组可能包含nils。我的路径很短。我把它改成了f。另外,您应该检查以下方法:File.File?、[].inject、File.open或File.write。最后两种方法是用来写作的。Opps!我不小心删除了一条重要的行。我把它加了回去。我使用File.open+File。写它在命令输出上打印了播放列表,并创建了一个文件,但该文件是空的…@SeanNieuwoudt-我想将不同文件夹中的曲目列表写入一个.txt文件…这有意义吗?谢谢
ROOT = "#{ENV['HOME']}/Music/iTunes/iTunes Media/Music"
folders = Dir["#{ROOT}/**"]
files = folders.flat_map { |dir| Dir["#{dir}/**/*.{MP3,mp3,m4a}"] }
songs = files.map { |file| File.basename(file) }
File.open('/tmp/songs.txt', 'w') { |f| f.write(songs.join("\n")) }