루프의 매개변수를 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에서 얻은 값 arg3arg4arg3과 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-exec의https://github.com/mslusarz/csv-nix-tools

관련 정보