指定したディレクトリ以下から再帰的にファイルをランダムに取ってくる
と思ったけど簡単だった
— JI@わんわんコンサル (@jaialkdanel) 2018年1月16日
へー、Ruby ではどうやるかなとちょっと考えてみた。
require 'find' def get_filenames_randomly(directory) Find.find(directory).select {|x| File.file?(x)}.shuffle.to_enum end puts get_filenames_randomly("/usr/lib").take(10)
こんな感じ? Ruby だから Enumerator を返すことにする。実質一行だな。
結果。
/usr/lib/python2.7/dist-packages/twisted/protocols/portforward.py /usr/lib/x86_64-linux-gnu/libgtk-3.so /usr/lib/python2.7/dist-packages/reportlab/lib/enums.py /usr/lib/x86_64-linux-gnu/libicule.so.55.1 /usr/lib/ruby/2.3.0/rdoc/markup/attributes.rb /usr/lib/x86_64-linux-gnu/vlc/plugins/codec/libsvcdsub_plugin.so /usr/lib/python2.7/dist-packages/twisted/protocols/mice/__init__.pyc /usr/lib/x86_64-linux-gnu/wine/dbghelp.dll.so /usr/lib/python3.5/lib2to3/pgen2/__pycache__/parse.cpython-35.pyc /usr/lib/python2.7/dist-packages/dbus/service.pyc
ちなみに
enum = get_filenames_randomly("/usr/lib") 10.times {puts enum.next}
でもほぼ同じ。(10回に満たない場合の挙動がちがう。)