본문 바로가기

코딩, 엑셀

쉘 명령 결과를 파이썬에서 읽어들이기


    proc = subprocess.Popen(['test.sh', 'ff.txt'], stdout=subprocess.PIPE)
    while True:
        line = proc.stdout.readline()
        if not line: break

        line = line.decode('utf-8')
        line = line.strip()

쉘에서 명령을 실행한 후 stdout을 통해서 나오는 문자열들을 읽어들여서 처리하고자 할때 위와 같이 코딩하면 된다. "subprocess.Popen(['test.sh', 'ff.txt']" 이 부분에서 뛰어쓰기 단위로 , 로 구분해서 넣어주면 된다. "proc.stdout.readline()"를 통해서 읽어들이면 string이 아니라 byte[] 타입이 된다. 해서 "line.decode('utf-8')" 를 통해서 string 타입으로 변환해주어야 한다. 

 

grep, awk를 활용해서 문자열 처리해서 가공해보고 싶었으나 너무 복잡하고 다루기 어려워서 그냥 파이썬으로 처리하기로...

 


Only I can change me life, no one can do it for me. – Carol Burnett