Hướng dẫn python print replace same line - python in thay thế cùng một dòng

Bạn có thể sử dụng "Return" -Character

    print(time.ctime(), end="\r", flush=True)
0 để trở về đầu dòng. Trong Python 2.x, bạn sẽ phải sử dụng
    print(time.ctime(), end="\r", flush=True)
1 và
    print(time.ctime(), end="\r", flush=True)
2 thay vì
    print(time.ctime(), end="\r", flush=True)
3.

import time, sys
while True:
    sys.stdout.write("\r" + time.ctime())
    sys.stdout.flush()
    time.sleep(1)

Trong Python 3.3, bạn có thể sử dụng hàm

    print(time.ctime(), end="\r", flush=True)
3, với các tham số
    print(time.ctime(), end="\r", flush=True)
5 và
    print(time.ctime(), end="\r", flush=True)
6:

    print(time.ctime(), end="\r", flush=True)

Tuy nhiên, lưu ý rằng theo cách này bạn chỉ có thể thay thế dòng cuối cùng trên màn hình. Nếu bạn muốn có một chiếc đồng hồ "trực tiếp" trong một giao diện người dùng điều khiển phức tạp hơn, bạn nên kiểm tra

    print(time.ctime(), end="\r", flush=True)
7.

import time, curses
scr = curses.initscr()
scr.addstr(0, 0, "Current Time:")
scr.addstr(2, 0, "Hello World!")
while True:
    scr.addstr(0, 20, time.ctime())
    scr.refresh()
    time.sleep(1)
curses.endwin()

Tóm tắt: Cách đơn giản nhất để ghi đè lên bản in trước đó thành stdout là đặt ký tự trả về vận chuyển (

    print(time.ctime(), end="\r", flush=True)
8) trong câu lệnh in là
    print(time.ctime(), end="\r", flush=True)
9. Điều này trả lại dòng stdout tiếp theo cho đầu dòng mà không cần tiến hành dòng tiếp theo.
The most straightforward way to overwrite the previous print to stdout is to set the carriage return (
    print(time.ctime(), end="\r", flush=True)
8) character within the print statement as
    print(time.ctime(), end="\r", flush=True)
9. This returns the next stdout line to the beginning of the line without proceeding to the next line.


  • Xây dựng vấn đề
  • Video hướng dẫn
  • Phương pháp 1: Sử dụng ký tự Return Return (‘\ r,)
  • Phương pháp 2: Dòng rõ và in bằng trình tự thoát ANSI
  • Phương pháp 3: Sử dụng nhân vật \ \ b ”
  • Vận chuyển trở lại (\ r) trong Python là gì?
  • Sự kết luận

Xây dựng vấn đề

Video hướng dẫnHow will you overwrite the previous print/output to stdout in Python?

Phương pháp 1: Sử dụng ký tự Return Return (‘\ r,)Let’s say you have the following snippet, which prints the output as shown below:

import time

for i in range(10):
    if i % 2 == 0:
        print(i)
        time.sleep(2)

Output:

Hướng dẫn python print replace same line - python in thay thế cùng một dòng

Phương pháp 2: Dòng rõ và in bằng trình tự thoát ANSIWhat we want to do is instead of printing each output in a newline, we want to replace the previous output value and overwrite it with the new output value on the same line, as shown below.

Hướng dẫn python print replace same line - python in thay thế cùng một dòng
Phương pháp 3: Sử dụng nhân vật \ \ b ”

Video hướng dẫn

Phương pháp 1: Sử dụng ký tự Return Return (‘\ r,)

Phương pháp 2: Dòng rõ và in bằng trình tự thoát ANSIRecommended Read: [FIXED] Carriage return Not Working with Print in VS Code

Phương pháp 1: Sử dụng ký tự Return Return (‘\ r,)

Phương pháp 2: Dòng rõ và in bằng trình tự thoát ANSIThe simplest solution to the given problem is to use the carriage return (‘

    print(time.ctime(), end="\r", flush=True)
0‘) character within your print statement to return the stdout to the start of the same print line without advancing to the next line. This leads to the next print statement overwriting the previous print statement.

Phương pháp 3: Sử dụng nhân vật \ \ b ”Note: Read here to learn more about the carriage return escape character.

Code:

import time

for i in range(10):
    if i % 2 == 0:
        print(i, end="\r")
        time.sleep(2)  

Output:

Hướng dẫn python print replace same line - python in thay thế cùng một dòng

Điều đó dễ dàng! Có phải là nó không? Thật không may, cách tiếp cận này không hoàn toàn không thể ngu ngốc. Hãy để xem những gì xảy ra khi chúng ta thực hiện đoạn trích sau:

import time

li = ['start', 'Processing result']
for i in range(len(li)):
    print(li[i], end='\r')
    time.sleep(2)
print('Terminate')

Output:

Hướng dẫn python print replace same line - python in thay thế cùng một dòng

____ ________ 21 không thể xóa sạch hoàn toàn đầu ra trước đó. Do đó, đầu ra cuối cùng là sai.

import time, curses
scr = curses.initscr()
scr.addstr(0, 0, "Current Time:")
scr.addstr(2, 0, "Hello World!")
while True:
    scr.addstr(0, 20, time.ctime())
    scr.refresh()
    time.sleep(1)
curses.endwin()
1 is unable to completely wipe out the previous output. Hence, the final output is erroneous.

Vì chúng tôi đang thực hiện từng đầu ra được tạo bởi một câu lệnh in trên đầu ra trước đó, nên không thể hiển thị đầu ra đúng cách trên cùng một dòng nếu đầu ra sau có độ dài ngắn hơn đầu ra trước đó.on top of the previous output, it is not possible to display an output properly on the same line if the following output has a shorter length than the output before.

Khắc phục: Để khắc phục sự cố trên, thay vì chỉ cần ghi đè đầu ra, chúng ta phải xóa đầu ra trước đó trước khi hiển thị đầu ra tiếp theo. Điều này có thể được thực hiện với sự trợ giúp của chuỗi ANSI sau: Hồi \ x1b [2K.To fix the above problem, instead of simply overwriting the output, we must clear the previous output before displaying the next output. This can be done with the help of the following ANSI sequence: “\x1b[2K“.

Code:

import time

li = ['start', 'Processing result']
for i in range(len(li)):
    print(li[i], end='\r')
    time.sleep(2)
print(end='\x1b[2K') # ANSI sequence to clear the line where the cursor is located
print('Terminate')

Output:

Hướng dẫn python print replace same line - python in thay thế cùng một dòng

Phương pháp 2: Dòng rõ và in bằng trình tự thoát ANSI

Cách tiếp cận: Ý tưởng ở đây là sử dụng một câu lệnh in thêm thay vì thay đổi tham số

    print(time.ctime(), end="\r", flush=True)
5 của câu lệnh in được sử dụng để hiển thị đầu ra. Câu lệnh in thêm được sử dụng để di chuyển con trỏ trở lại dòng trước đó, nơi đầu ra được in và sau đó xóa nó ra với sự trợ giúp của các chuỗi thoát ANSI.The idea here is to use an extra print statement instead of altering the
    print(time.ctime(), end="\r", flush=True)
5 parameter of the print statement that is used to display the output. The extra print statement is used to move the cursor back to the previous line where the output was printed and then clear it out with the help of ANSI escape sequences.

Explanation:

  • In một dòng kết thúc bằng một dòng mới ban đầu.
  • Ngay trước khi in đầu ra tiếp theo trên dòng mới, hãy thực hiện một vài thao tác với sự trợ giúp của chuỗi thoát ANSI:
    1. Di chuyển con trỏ lên, tức là, đến dòng đầu ra trước bằng trình tự thoát: ‘\ 033 [1a.\033[1A‘.
    2. Xóa dòng bằng cách sử dụng chuỗi thoát: ‘\ x1b [2K‘\x1b[2K
  • In đầu ra tiếp theo.

Code:

import time

UP = '\033[1A'
CLEAR = '\x1b[2K'
for i in range(10):
    if i % 2 == 0:
        print(i)
        time.sleep(2)
        print(UP, end=CLEAR)

Output:

Hướng dẫn python print replace same line - python in thay thế cùng một dòng

Thảo luận: Mặc dù mã này có thể trông phức tạp hơn một chút so với cách tiếp cận trước đó, nhưng nó đi kèm với một lợi thế lớn của sự gọn gàng của đầu ra. Bạn không phải lo lắng về độ dài của đầu ra trước đó. Ngoài ra, con trỏ không trực quan cản trở đầu ra được hiển thị.Though this code might look a little more complex than the previous approach, it comes with a major advantage of the neatness of output. You don’t have to worry about the length of the previous output. Also, the cursor does not visually hinder the output being displayed.

Ở đây, một hướng dẫn tiện dụng để thoát khỏi các chuỗi liên quan đến các chuyển động con trỏ:

TRÌNH TỰ THOÁT Chuyển động con trỏ
\ 033 [; HVị trí con trỏ. Đặt con trỏ ở dòng L và cột C.
\ 033 [aDi chuyển con trỏ lên bởi n dòng.
\ 033 [BDi chuyển con trỏ xuống bằng n dòng.
\ 033 [cDi chuyển con trỏ về phía trước bằng n cột.
\ 033 [DDi chuyển con trỏ về phía sau bởi n cột.
\ 033 [2JXóa màn hình, di chuyển đến (0,0)
\ 033 [KXóa kết thúc của dòng.

Phương pháp 3: Sử dụng nhân vật \ \ b ”

Một cách khác để ghi đè dòng đầu ra trước đó là sử dụng ký tự backspace (\ \ b,) và ghi vào đầu ra tiêu chuẩn.\b“) and write to the standard output.

Code:

import time
import sys

for i in range(10):
    if i % 2 == 0:
        sys.stdout.write(str(i))
        time.sleep(1)
        sys.stdout.write('\b')
        sys.stdout.flush()

Output:

Hướng dẫn python print replace same line - python in thay thế cùng một dòng

THẬN TRỌNG: Đảm bảo rằng bạn xả đúng bộ đệm như được thực hiện trong đoạn trích trên. Nếu không, bạn có thể thấy rằng chỉ có kết quả cuối cùng được hiển thị ở cuối tập lệnh.Ensure that you properly flush the buffer as done in the above snippet. Otherwise, you might see that only the last result is displayed at the end of the script.

Tiền thưởng đọc trước 👇

Vận chuyển trở lại (\ r) trong Python là gì?

Nói một cách đơn giản, vận chuyển trở lại là một nhân vật trốn thoát giống như

import time, curses
scr = curses.initscr()
scr.addstr(0, 0, "Current Time:")
scr.addstr(2, 0, "Hello World!")
while True:
    scr.addstr(0, 20, time.ctime())
    scr.refresh()
    time.sleep(1)
curses.endwin()
3. Trả về vận chuyển được ký hiệu là
    print(time.ctime(), end="\r", flush=True)
0 và về cơ bản nó được sử dụng để chuyển con trỏ sang đầu một dòng hoặc chuỗi thay vì cho phép nó chuyển sang dòng tiếp theo.carriage return is an escape character just like
import time, curses
scr = curses.initscr()
scr.addstr(0, 0, "Current Time:")
scr.addstr(2, 0, "Hello World!")
while True:
    scr.addstr(0, 20, time.ctime())
    scr.refresh()
    time.sleep(1)
curses.endwin()
3. Carriage return is denoted as
    print(time.ctime(), end="\r", flush=True)
0
and it is basically used to shift the cursor to the beginning of a line or string instead of allowing it to move on to the next line.

Bất cứ khi nào bạn sử dụng ký tự thoát trở lại vận chuyển '\ r', nội dung xuất hiện sau khi \ r sẽ xuất hiện trên đầu dòng của bạn và sẽ tiếp tục thay thế các ký tự của chuỗi trước đó cho đến khi nó chiếm tất cả các nội dung còn lại sau

    print(time.ctime(), end="\r", flush=True)
0 trong chuỗi đó.‘\r’, the content that comes after the \r will appear on top of your line and will keep replacing the characters of the previous string one by one until it occupies all the contents left after the
    print(time.ctime(), end="\r", flush=True)
0 in that string.

Example:

li = ['One', 'Two', 'Three']
for i in range(len(li)):
    print(li[i], end='\r')

# OUTPUT-->Three

Sự kết luận

Để tổng hợp mọi thứ, cách dễ dàng nhất để ghi đè lên bản in trước đó là sử dụng ký tự return ____10 trong câu lệnh in của bạn bằng tham số cuối. Để đảm bảo rằng đầu ra trước đó bị xóa hoàn toàn trước khi in đầu ra mới, bạn có thể sử dụng trình tự thoát ANSI

import time, curses
scr = curses.initscr()
scr.addstr(0, 0, "Current Time:")
scr.addstr(2, 0, "Hello World!")
while True:
    scr.addstr(0, 20, time.ctime())
    scr.refresh()
    time.sleep(1)
curses.endwin()
7.

Tôi hy vọng hướng dẫn này đã giúp bạn. Ở đây, một cách thú vị khác đọc mà bạn có thể thấy hữu ích: Python in một danh sách dòngPython Print One Line List


  • Một trong những kỹ năng được tìm kiếm nhiều nhất trên Fiverr và Upwork là & nbsp; craping web. Đừng nhầm lẫn: & nbsp; trích xuất dữ liệu theo chương trình từ các trang web & nbsp; là một kỹ năng sống quan trọng trong thế giới ngày nay mà được định hình bởi web và công việc từ xa.web scraping. Make no mistake: extracting data programmatically from websites is a critical life skill in today’s world that’s shaped by the web and remote work.
  • Vì vậy, bạn có muốn làm chủ nghệ thuật quét web bằng cách sử dụng Python xông xinh đẹp không?
  • Nếu câu trả lời là có - khóa học này sẽ đưa bạn từ người mới bắt đầu đến chuyên gia về việc cạo web.

Hướng dẫn python print replace same line - python in thay thế cùng một dòng

Tôi là một blogger Python chuyên nghiệp và người tạo nội dung. Tôi đã xuất bản nhiều bài báo và tạo ra các khóa học trong một khoảng thời gian. Hiện tại tôi đang làm việc như một freelancer toàn thời gian và tôi có kinh nghiệm trong các lĩnh vực như Python, AWS, DevOps và Mạng.

Bạn có thể liên lạc với tôi @:

Upwork LinkedIn
LinkedIn

Làm thế nào để bạn ghi đè một dòng in trong Python?

Tóm tắt: Cách đơn giản nhất để ghi đè lên bản in trước đó thành stdout là đặt ký tự trả về vận chuyển ('\ r') trong câu lệnh in dưới dạng in (chuỗi, end = "\ r"). Điều này trả lại dòng stdout tiếp theo cho đầu dòng mà không cần tiến hành dòng tiếp theo.set the carriage return ( '\r' ) character within the print statement as print(string, end = "\r") . This returns the next stdout line to the beginning of the line without proceeding to the next line.

Làm thế nào để bạn cập nhật cùng một câu lệnh in trong Python?

Sử dụng Trở lại vận chuyển "\ r" để in trên cùng một dòng Sử dụng in cú pháp (chuỗi, end = "\ r") để làm cho dòng stdout tiếp theo bắt đầu ở đầu dòng hiện tại.Do đó, chuỗi được ghi đè bởi câu lệnh in () sau. Use the syntax print(string, end = "\r") to make the next stdout line begin at the beginning of the current line. As a result, string is overwritten by the following print() statement.

Làm cách nào để in trên cùng một dòng với các câu lệnh khác nhau?

Sửa đổi phương thức print () Để in trên cùng một dòng Phương thức in có thêm một tham số bổ sung = Tiết ra để giữ con trỏ trên cùng một dòng.Tham số cuối có thể lấy các giá trị nhất định như không gian hoặc một số dấu trong các trích dẫn kép để tách các phần tử được in trong cùng một dòng. The print method takes an extra parameter end=” “ to keep the pointer on the same line. The end parameter can take certain values such as a space or some sign in the double quotes to separate the elements printed in the same line.

Làm cách nào để giữ văn bản trên cùng một dòng trong Python?

Nếu bạn muốn in văn bản của mình trên cùng một dòng trong Python 2, bạn nên sử dụng dấu phẩy ở cuối câu lệnh in của bạn.use a comma at the end of your print statement.