can't go to sleep

組み込み開発の多くをRubyで自動化することに興味があります

同一フォルダ以下にあるcsvファイルを抽出するスクリプト

最近Pythonを勉強し始めています。
とりあえず、同一フォルダ以下にあるcsvファイルを抽出するスクリプトを作成してみました。

# csv_file_search.py
import os
import re

def recursive(path, file_list):
  dir_list = os.listdir(path)
  for dirfile in dir_list:
    abs_dirfile = path + '\\' + dirfile # 絶対パスにする
    if os.path.isdir(abs_dirfile):
      recursive(abs_dirfile, file_list)
    else:
      file_list.append(abs_dirfile)

path = os.path.dirname(__file__)

file_list = []
recursive(path, file_list)

pattern = re.compile(r'\.csv$')
for file in file_list:
  if pattern.search(file):
    print file

ちなみに、rubyだとこんな感じ。

# csv_file_search.rb
def recursive(path, file_list)
  Dir::foreach(path) do |dirfile|
    next if dirfile == "." or dirfile == ".."
    abs_dirfile = path + "/" + dirfile

    if FileTest.directory?(abs_dirfile)
      recursive(abs_dirfile, file_list)
    else
      file_list << abs_dirfile
    end
  end
end

file_list = Array.new
path = File.dirname(File.expand_path(__FILE__))
recursive(path, file_list)

file_list.each{|file|
  if file =~ /\.csv$/
    print file
    print "\n"
  end
}

また大体同じですね。
unityをいじる場合はrubyが必須なのですが、組み込み系エンジニアは、Pythonの方が向いていると思います。scipyなどで複雑な演算が得意だったり、そもそも処理速度が速かったり、英語圏ではよく使用されているようです。
scipyは毎年シンポジウムもあるようです。
ということで、これからpythonを覚えて、mathcadの代わりにpython+sphinxで出来れば良いなあと考えています。どれだけかかるのやら・・・。