본문 바로가기
개발일기/파이썬

python print에 관한것(여러줄 print를 한줄로...등등)

by 프로그래머콩 2019. 7. 4.

파일 처리 작업 관련해서

현재 진행 상황을 프린트 하는

작업을 진행하는데

print로 찍으면 여러번 나타남.

이거 자체가

프린트를 여러번찍게되니까

오버해드가 커져서서

뭔가 방법이 없을까 했는데

있음

방법은 콘솔 출력 이전위치로 돌아가도록 하는 편법인데

1. print 대신 sys.stdout.write를사용한다

2. print앞에 ("\r")을 붙여 콘솔 출력의 이전 위치로 돌아가도록 유도한다.

( 보다 정확한 표현법은 백 스페이스 ' \ r '또는 ( ' \ x08 ') char을 사용해야 한다고 합니다)

나는 1번 방법을 사용했습니다

< 소스 수정 전 >

def displayFilePercent( path, count ):
    # 경로에 따른 디렉토리 파일 개수 구하기
    all_file = len(os.listdir(path))

    # 함수에서 변수로 받아온 현재 파일 개수
    now_file = count


    print("현재 진행 상황 : " + str((int(now_file)/int(all_file))*100) + "% (" + str(now_file) + "/" + str(all_file) + ")")
​

< 소스 수정 후 >

def displayFilePercent( path, count ):
    # 경로에 따른 디렉토리 파일 개수 구하기
    all_file = len(os.listdir(path))

    # 함수에서 변수로 받아온 현재 파일 개수
    now_file = count

    # print(' a = {}, b = {}, c = {} '.format(a, b, c))
    sys.stdout.write("현재 진행 상황 : \r{} % ( {} / {} )".format(str((int(now_file)/int(all_file))*100),str(now_file),str(all_file) ))

그렇다고 합니다