作者godfat (godfat 真常)
看板Ruby
标题[连结] 快速大量档案是否存在的检查
时间Sun Aug 26 14:46:14 2007
http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/
1d2c7c076cc20703/b7ec20fe5c8c2b0d
缩
http://rubyurl.com/qkE
一般人的直觉都是这样写吧?恐怕会不假思索 XD
Dir.chdir( source_directory ) do
my_array.each do |file_name|
if File.exist?( file_name )
...
else
...
end
end
end
不过 Xavier Noria 写了个接近一行的方式:
(filenames - Dir.entries(dirname)).empty?
这个真的满厉害的,empty? 为 true 的话,
所有档案都存在,反之,留下来的就是不存在。
如果需要存在的呢?再用原本的 filenames 去减,就是了。
i.e.,
non_exists = filenames - Dir.entries(dirname)
exitst = filenames - non_exists
简洁多了。
edited:
补一下其他作法好了:
Dir.chdir( source_directory ) do
exists = filenames.select{|f| File.exist? f}
non_exist = filenames - exist
end
--
『风车』が廻り続ける度に 『美しき』幻想が静かに纺がれ
『焔』の揺らめきの外に 『腕』を伸ばす愚かな者达 -《Roman》5th Story
『宝石』をより多く掴もうと 『朝と夜』の狭间を彷徨い続ける Track 10
『星屑』の砂の煌めきにも 『葡萄酒』の仄甘い陶酔を魅せ 黄昏の贤者
『贤者』が忌避する槛の中から 『伝言』の真意を彼等に问うだろう
『天使』が别れを告げし时 『地平线』は第五の物语を识る
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.28.18
※ 编辑: godfat 来自: 220.135.28.18 (08/26 14:52)
1F:推 softwind:关键点是在 Array中 - 代表 差集对吧? 08/28 01:33
2F:→ godfat:是的 08/28 10:53