繁体   English   中英

如何在Ruby中获取文件夹中文件的所有文件名

[英]How to get all the filenames of the files inside a folder in Ruby

我有一个接受文件夹路径的方法,我想得到所有扩展名为'.yml'的文件名,并将它们添加到对象的哈希中,如下所示:

如果文件名是saved_file_1.yml - > {saved_file_1 => "saved_file_1.yml"}

使用Dir::glob方法如下

Dir.glob("#{path}/*.yml").each_with_object({}) do |filename,hsh|
   hsh[File.basename(filename,'.yml')] = filename
end
hash = {}
Dir["#{path}/*.yml"].each { |f| hash[File.basename(f,'.yml')] = f }

要获得匹配的文件用列表Dir.glob得到目录和文件的列表File.extname得到扩展名

Dir.glob(path_to_folder).select { |file| File.extname(file) == ".yml" }

要将它们转换为您问题中的哈希值,请使用File.basename获取不带扩展名的文件名,并使用Enumerable#each_with_object创建哈希对象

Dir.glob(path_to_folder).each_with_object({}) { |file, hash| hash[File.basename(file, ".yml")] = file }

其他方式:

Hash[(d = Dir["#{path}/*.yml"]).map { |f| File.basename(f,".yml") }.zip(d)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM