본문 바로가기
개발/오늘의 개발일지

[Python] 한줄로 print 문을 출력하기 위한 캐리지 리턴 이해하기

by 꾀돌이 개발자 2024. 11. 17.
반응형

 

줄 바꿈 없이 print 문을 출력하기 위한 캐리지 리턴을 이해합니다.

 

 

 
 

목차

     

    개발 의도

    import time
    
    # 계산 과정을 보여주는 예제
    for i in range(1, 11):
        # 계산 중인 진행 상태 출력
        print(f"진행 중: {i * 10}%")
        time.sleep(1)  # 지연 시간 추가 (계산 시간이 길다고 가정)
    
    print("\n완료!")
    
    # 출력값: 진행 중: 10% / ... / 진행 중: 100% / 완료!

    - 위와 같이 반복문 내에서 print 함수를 사용합니다.

     

    문제 상황

    - 반복문 내에서 print 함수를 사용할 경우

          터미널 혹은 콘솔 화면이 지나치게 복잡해질 수 있습니다,

     

    문제 원인 파악

    - 캐리지 리턴(carriage return)을 의미하는 특수 문자 '\r'를 사용하여,

          줄 바꿈 없이 print문을 출력할 수 있습니다.

     

    캐리지 리턴(carriage return)을 통한 문제 해결

    import time
    
    # 계산 과정을 보여주는 예제
    for i in range(1, 11):
        # 계산 중인 진행 상태 출력
        print(f"진행 중: {i * 10}%", end='\r')
        time.sleep(1)  # 지연 시간 추가 (계산 시간이 길다고 가정)
    
    print("\n완료!")
    
    # 출력값: 진행 중: 100% / 완료!

    - print문 내에서 end='\r'를 사용하면 커서가 줄을 바꾸지 않고, 해당 줄의 처음으로 이합니다.

          이 후 다음 출력 내용이 기존 내용을 덮어쓰게 됩니다.

     

    캐리지 리턴(carriage return) 특성

    - 일반적으로 print문 기본 설정이 end='\n' 이므로,

           print문이 출력되면 커서가 다음 줄로 자동으로 이동합니다.

     

    - end='\r'를 사용할 경우, 커서가 다음 줄로 이동하지 않고

          해당 줄의 처음으로 이동하게 됩니다.

    print("이전값 내용을 출력합니다.", end='\r')
    print("현재값 출력", end='\r')
    # 현재값 출력을 출력합니다.

    - 캐리지 리턴은 커서를 해당 줄의 처음으로 이동하는 개념이므로,

          만약 현재 출력값이 이전 출력값보다 짧다면

          위 코드와 같이 이전 출력값이 현재 출력값에 남아있게 됩니다.

     

    아래 코드로 디버깅 완료

    import time
    
    # 계산 과정을 보여주는 예제
    for i in range(1, 11):
        # 계산 중인 진행 상태 출력
        print(f"진행 중: {i * 10}%", end='\r')
        time.sleep(1)  # 지연 시간 추가 (계산 시간이 길다고 가정)
    
    print("\n완료!")
    
    # 출력값: 진행 중: 100% / 완료!

    - 위와 같이 캐리지 리턴(carriage return) 특성을 통해

          터미널 혹은 콘솔 화면을 깔끔하게 사용할 수 있습니다.

    반응형