마지막으로 인쇄 된 줄을 덮어 쓰는 방법에 대한 질문은 이전에 요청되고 답변되었습니다 (예 : 여기 ).하지만 모든 답변은 마지막 줄을 비슷한 길이로 덮어 쓴다고 가정하는 것 같습니다 (예 : "2 % 완료"라는 진행 표시기에서) "1 % 완료"를 덮어 씁니다.
그러나 "Now reading file path/to/xxx/file.ext..."
다음 파일 이름이 더 짧을 수있는와 같은 가변 길이 문을 인쇄하고 싶습니다 . 간단한 접근 방식을 사용하고 먼저 인쇄 한 "Now reading ./path/with/many/long-named/subdirectories/version/LongFileNameAsWell.ext..."
다음을 사용 "Now reading ./file.ext..."
하면 결과는 다음과 같은 줄이됩니다.
Now reading ./file.ext... ng-named/subdirectories/version/LongFileNameAsWell.ext
해결 방법은 내 모든 인쇄 문자열에 공백을 추가하는 것이지만, 전체 파일 이름을 덮을 수있는 충분한 공백이있는 동안 줄 바꿈으로 둘러싸 지 않도록해야합니다. 이 모든 것이 많은 오버 헤드, 버그를위한 공간 등을 추가합니다.
이것을 수행하는 Pythonic 방법이 있습니까?
기록을 위해 Windows의 IPython 콘솔과 함께 Spyder에서 Python 3.7을 사용하고 있습니다.
Sayandip Dutta의 답변 을 기반으로get_terminal_size
from shutil
을 사용 하여 현재 줄 길이 설정을 얻은 다음 새 줄을 작성하고 그보다 짧은 경우 공백을 추가 할 수도 있습니다.
import time
from shutil import get_terminal_size
l = ["1st statment is long",
"2nd short",
"3rd statement is much longer...",
"done."]
sz = get_terminal_size().columns
for i in l:
print('\r', end=i.ljust(sz, ' '))
time.sleep(1)
편집 : 나는 이것이 매우 긴 줄에서 작동하지 않을 수 있다는 것을 깨달았습니다 ... 그래서 당신은 다음과 같은 것을 사용해야 할 것입니다.
lines = ["1st statment is long",
"2nd short",
"3rd statement is much longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer longer...",
"more lines",
"done."]
widths = [0] + [len(l) for l in lines][:-1]
for l, w in zip(lines, widths):
print('\r', end=l.ljust(w, ' '))
time.sleep(1)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다