我正在尝试将文件扩展名作为变量传递,但它似乎不起作用。当我运行getlist.rb(txt)
时def getlist(extension)
file = File.new("the_list.txt", "w")
Dir['../path/*.'+ extension].each { |f| file.puts File.basename(f, '.'+ extension).upcase }
end
基本上我想放入任何文件扩展名(txt,pdf,rb等),它会给我一个没有扩展名的列表。脚本在硬编码时工作正常,当我尝试放入变量时,它不起作用。
最诚挚的问候,
AZCards
答案 0 :(得分:0)
Dir['../path/*.'+ extension].each { |f| file.puts File.basename(f, File.extname(f)).upcase }
也就是说,在使用原始字符串连接时,它对我来说也很好:
ruby-1.9.2-p0 :035 > getlist("html")
=> ["./about.html", "./epl-v10.html", "./notice.html"]
ruby-1.9.2-p0 :037 > getlist("*")
=> ["./libcairo-swt.so", "./eclipse.ini", "./icon.xpm", "./eclipse.ini~", "./about.html", "./epl-v10.html", "./artifacts.xml", "./notice.html"]
ruby-1.9.2-p0 :038 > getlist("ini")
=> ["./eclipse.ini"]
(为了空间目的,删除没有删除扩展名,但是它们以扩展名打印,大写。)
答案 1 :(得分:0)
我的例子:
def getlist(extension)
File.open("the_list.txt", "w"){|file|
Dir["*.#{extension}"].each { |f|
file << File.basename(f, File.extname(f)).upcase
file << "\n"
}
}
end
getlist('rb')
getlist(:rb)
我的主要修改:
getlist.rb(txt)
- 这只适用,当txt是一个变量,但我认为你想'txt')<强>更新强> 以防您需要具有多个扩展的解决方案并从命令行调用它:
def getlist(*extensions)
p "*.{#{extensions.join(',')}}"
File.open("the_list.txt", "w"){|file|
Dir["*.{#{extensions.join(',')}}"].each { |f|
file << File.basename(f, File.extname(f)).upcase
file << "\n"
}
}
end
#getlist('rb', 'txt')
#getlist(:rb, :txt)
getlist(*ARGV)