ループのパラメータをcsvの値に置き換える

ループのパラメータをcsvの値に置き換える

次のようにPythonスクリプトを複数回実行するためにbash forループを作成しようとしています。

for i from 1 to 10 do 
    arg1 = 'path/to/directory1'
    arg2 = 'path/to/directory2'
    script.py arg1 arg2 arg3 arg4 
    done

arg1そして、arg2時間が経っても一貫性を保つ静的経路なので簡単です。しかし、私が持っているCSVから得られた値arg3arg4、arg3とarg4がその行に応じて各反復ごとに変更されることを望みます。

したがって、このようなCSVの場合

400 Steve
401 Jack
402 John
403 Jim
404 Jane
405 Joe 
406 Bob
407 Richard
408 Eric 
409 Tim
410 Marie

したがって、ループの最初の反復は次のようになります。

script.py path/to/directory1 path/to/directory2 400 Steve

答え1

CSVファイルのすべての行を読み取って処理するには、whileループを使用できます。

arg1='path/to/directory1'
arg2='path/to/directory2'

while IFS=, read -r arg3 arg4; do
    script.py "$arg1" "$arg2" "$arg3" "$arg4" 
done < file.csv

答え2

(echo "column1,column2"; cat file.csv) | 
csv-exec -- script.py path/to/directory1 path/to/directory2 %column1 %column2

csv-exechttps://github.com/mslusarz/csv-nix-tools

関連情報