大規模なCSVファイルをたくさんマージしています。主要なジャンクをスキップして、各行にファイル名を追加しているとき:PowerShell Get-Contentの基本操作が遅い
Get-ChildItem . | Where Name -match "Q[0-4]20[0-1][0-9].csv" |
Foreach-Object {
$file = $_.BaseName
Get-Content $_.FullName | select-object -skip 3 | % {
"$_,${file}" | Out-File -Append temp.csv -Encoding ASCII
}
}
PowerShellではこれでもi7の/最大16GB機(〜5メガバイト/分)に非常に遅いです。より効率的にすることはできますか。 Python?あなたが最初にメモリ内の配列にすべてをかける場合
あなたのボトルネックは、あなたが 'Out-File -Append'を使っていることです。つまり、あなたのcsvの各行のディスクに書き込みます。より良いアプローチは、すべてのファイルをメモリにロードし、必要な処理を行い、マージされたcsvを一度に出力することです。 – gms0ulman
ああ、ありがとう、これはコンテンツを追加しますか?私はそれを行ってみよう –
Add-Contentはスピードに差はなかったが、各行にファイル名を追加すると速度が上がったので、それはボトルネックだと思う。残念ながら私はこれを最終的に行うことができないかもしれません) –