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 [
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]
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:
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.
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:
Đ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:
____ ________ 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.
1 is unable to completely wipe out the previous output. Hence, the final output is erroneous.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[]
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:
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ố
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]
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:
- 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‘.
- 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:
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 [; H | Vị trí con trỏ. Đặt con trỏ ở dòng L và cột C. |
\ 033 [a | Di chuyển con trỏ lên bởi n dòng. |
\ 033 [B | Di chuyển con trỏ xuống bằng n dòng. |
\ 033 [c | Di chuyển con trỏ về phía trước bằng n cột. |
\ 033 [D | Di chuyển con trỏ về phía sau bởi n cột. |
\ 033 [2J | Xóa màn hình, di chuyển đến [0,0] |
\ 033 [K | Xó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:
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.
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