読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

CSVファイルを解析する

@IT - .NET TIPS CSVファイルを読み込むには?を参考に、PowerShellCSVファイルを解析する関数を書きました。

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualBasic")

# 引数で指定したCSVファイルのデータを列挙する。
# @param $file ファイルパス
# @param $proc 各行データがコールバックされる関数
function  global:ReadCSV( $file, $proc ) {
  $close = {
    if ($parser -ne $null) {
      $parser.Close();
    }
  }
  $parser = $null;
  $parser = New-Object Microsoft.VisualBasic.FileIO.TextFieldParser($file, 
    [System.Text.Encoding]::GetEncoding("Shift_JIS"));
  $parser.TextFieldType = [Microsoft.VisualBasic.FileIO.FieldType]::Delimited;
  $parser.SetDelimiters(",");
  while (!$parser.EndOfData) {
    $row = $parser.ReadFields();
    &$proc $row;
  }
  trap { 
    &$close;
    break;
  }
  &$close;
}

以下のようなCSV(test.csv)を用意して、

a,b,"c",
d,e,"あああ",
g,"h h",i,

解析。

PS C:\> .\utils.ps1
PS C:\> ReadCSV ".\test.csv" { echo $args[0] }

実行結果です。

a
b
c

d
e
あああ

g
h h
i