Hướng dẫn how do you print back to back in python? - làm thế nào để bạn in ngược trở lại trong python?

Tôi muốn chạy một tập lệnh, về cơ bản hiển thị đầu ra như thế này:

Show
Installing XXX...               [DONE]

Hiện tại, tôi in

def install_xxx():
   print "Installing XXX...      ",

install_xxx()
print "[DONE]"
6 trước và sau đó tôi in
def install_xxx():
   print "Installing XXX...      ",

install_xxx()
print "[DONE]"
7.

Tuy nhiên, bây giờ tôi muốn in

def install_xxx():
   print "Installing XXX...      ",

install_xxx()
print "[DONE]"
8 và
def install_xxx():
   print "Installing XXX...      ",

install_xxx()
print "[DONE]"
7 trên cùng một dòng.

Bất kỳ ý tưởng?

Ivanleoncz

8.1975 Huy hiệu vàng53 Huy hiệu bạc48 Huy hiệu đồng5 gold badges53 silver badges48 bronze badges

Hỏi ngày 8 tháng 4 năm 2011 lúc 16:38Apr 8, 2011 at 16:38

Hướng dẫn how do you print back to back in python? - làm thế nào để bạn in ngược trở lại trong python?

2

Giải pháp Python 3

Hàm

print 'something',
...
print ' else',
0 chấp nhận tham số
print 'something',
...
print ' else',
1 mặc định là
print 'something',
...
print ' else',
2 (dòng mới). Đặt nó thành một chuỗi trống ngăn nó phát hành một dòng mới ở cuối dòng.

def install_xxx():
    print("Installing XXX...      ", end="", flush=True)

install_xxx()
print("[DONE]")

Giải pháp Python 2

Việc đặt dấu phẩy vào cuối dòng

print 'something',
...
print ' else',
0 ngăn không cho
print 'something',
...
print ' else',
0 phát hành một dòng mới (bạn nên lưu ý rằng sẽ có thêm một không gian ở cuối đầu ra).

def install_xxx():
   print "Installing XXX...      ",

install_xxx()
print "[DONE]"

Wouter

5202 Huy hiệu vàng13 Huy hiệu bạc22 Huy hiệu đồng2 gold badges13 silver badges22 bronze badges

Đã trả lời ngày 8 tháng 4 năm 2011 lúc 16:56Apr 8, 2011 at 16:56

8

Bạn có thể chỉ cần sử dụng điều này:

print 'something',
...
print ' else',

và đầu ra sẽ là

something else

Không cần phải quá mức cần thiết bởi

print 'something',
...
print ' else',
5. Hãy chú ý đến biểu tượng dấu phẩy ở cuối.

Python 3+

print 'something',
...
print ' else',
6 để loại bỏ dòng mới ở cuối. Đọc thêm bởi
print 'something',
...
print ' else',
7
print 'something',
...
print ' else',
6 to remove the newline insert at the end. Read more by
print 'something',
...
print ' else',
7

Đã trả lời ngày 14 tháng 3 năm 2013 lúc 13:35Mar 14, 2013 at 13:35

Boldnikboldnikboldnik

2.4892 Huy hiệu vàng25 Huy hiệu bạc32 Huy hiệu Đồng2 gold badges25 silver badges32 bronze badges

9

Bạn nên sử dụng char backspace '\ r' hoặc ('\ x08') để quay lại vị trí trước đó trong đầu ra bảng điều khiển\r' or ('\x08') char to go back on previous position in console output

Python 2+:

import time
import sys

def backspace(n):
    sys.stdout.write((b'\x08' * n).decode()) # use \x08 char to go back   

for i in range(101):                        # for 0 to 100
    s = str(i) + '%'                        # string for output
    sys.stdout.write(s)                     # just print
    sys.stdout.flush()                      # needed for flush when using \x08
    backspace(len(s))                       # back n chars    
    time.sleep(0.2)                         # sleep for 200ms

Python 3:

import time   

def backline():        
    print('\r', end='')                     # use '\r' to go back


for i in range(101):                        # for 0 to 100
    s = str(i) + '%'                        # string for output
    print(s, end='')                        # just print and flush
    backline()                              # back to the beginning of line    
    time.sleep(0.2)                         # sleep for 200ms

Mã này sẽ tính từ 0% đến 100% trên một dòng. Giá trị cuối cùng sẽ là:

> python test.py
100%

Thông tin bổ sung về Flush trong trường hợp này ở đây: Tại sao các câu lệnh in Python có chứa 'end =' đối số hoạt động khác nhau trong các vòng lặp?

Hướng dẫn how do you print back to back in python? - làm thế nào để bạn in ngược trở lại trong python?

Vùng nhiệt đới

1.3081 Huy hiệu vàng8 Huy hiệu bạc26 Huy hiệu đồng1 gold badge8 silver badges26 bronze badges

Đã trả lời ngày 31 tháng 3 năm 2014 lúc 8:57Mar 31, 2014 at 8:57

VADIM ZIN4UKVADIM ZIN4UKVadim Zin4uk

1.66622 Huy hiệu bạc18 Huy hiệu đồng22 silver badges18 bronze badges

3

Sử dụng

print 'something',
...
print ' else',
8 và
print 'something',
...
print ' else',
9. Theo cách này, bạn phải thêm dòng mới bằng tay với
something else
0 nếu bạn muốn tạo lại chức năng in. Tôi nghĩ rằng nó có thể là không cần thiết khi sử dụng những lời nguyền chỉ cho việc này.

Hướng dẫn how do you print back to back in python? - làm thế nào để bạn in ngược trở lại trong python?

Mgilson

291K63 Huy hiệu vàng610 Huy hiệu bạc677 Huy hiệu Đồng63 gold badges610 silver badges677 bronze badges

Đã trả lời ngày 8 tháng 4 năm 2011 lúc 16:42Apr 8, 2011 at 16:42

Ferostarferostarferostar

7.0467 Huy hiệu vàng37 Huy hiệu bạc61 Huy hiệu Đồng7 gold badges37 silver badges61 bronze badges

1

Đơn giản nhất:

Python 3

    print('\r' + 'something to be override', end='')

Điều đó có nghĩa là nó sẽ quay lại con trỏ để bắt đầu, hơn là sẽ in một cái gì đó và sẽ kết thúc trong cùng một dòng. Nếu trong một vòng lặp, nó sẽ bắt đầu in ở cùng một nơi, nó bắt đầu.

Đã trả lời ngày 6 tháng 11 năm 2018 lúc 19:15Nov 6, 2018 at 19:15

SunflorosunfloroSunfloro

6801 Huy hiệu vàng8 Huy hiệu bạc11 Huy hiệu đồng1 gold badge8 silver badges11 bronze badges

2

Không có câu trả lời nào làm việc cho tôi vì tất cả họ đều dừng lại cho đến khi gặp phải một dòng mới. Tôi đã viết một người trợ giúp đơn giản:

def print_no_newline(string):
    import sys
    sys.stdout.write(string)
    sys.stdout.flush()

Để kiểm tra nó:

def install_xxx():
    print("Installing XXX...      ", end="", flush=True)

install_xxx()
print("[DONE]")
0

"Xin chào" trước tiên sẽ in ra và xả ra màn hình trước khi ngủ. Sau đó, bạn có thể sử dụng in tiêu chuẩn.

Đã trả lời ngày 22 tháng 7 năm 2013 lúc 18:23Jul 22, 2013 at 18:23

Hyprnickhyprnickhyprnick

2.5832 Huy hiệu vàng20 Huy hiệu bạc18 Huy hiệu đồng2 gold badges20 silver badges18 bronze badges

1

Python nối thêm Newline như một kết thúc để in. Sử dụng end = '' cho python3 cho phương thức in để nối một không gian thay vì đường mới. Đối với python2 sử dụng dấu phẩy ở cuối câu lệnh in.

def install_xxx():
    print("Installing XXX...      ", end="", flush=True)

install_xxx()
print("[DONE]")
1

Hướng dẫn how do you print back to back in python? - làm thế nào để bạn in ngược trở lại trong python?

Pikamander2

6.5513 Huy hiệu vàng43 Huy hiệu bạc65 Huy hiệu Đồng3 gold badges43 silver badges65 bronze badges

Đã trả lời ngày 24 tháng 12 năm 2019 lúc 0:29Dec 24, 2019 at 0:29

MrkullimrkulliMrKulli

72910 Huy hiệu bạc18 Huy hiệu đồng10 silver badges18 bronze badges

Ví dụ đơn giản này sẽ in 1-10 trên cùng một dòng.

def install_xxx():
    print("Installing XXX...      ", end="", flush=True)

install_xxx()
print("[DONE]")
2

Đã trả lời ngày 15 tháng 5 năm 2018 lúc 7:01May 15, 2018 at 7:01

Hướng dẫn how do you print back to back in python? - làm thế nào để bạn in ngược trở lại trong python?

In có một đối số

print 'something',
...
print ' else',
1 tùy chọn, đó là những gì được in cuối cùng. Mặc định là một dòng mới, nhưng bạn có thể thay đổi nó thành chuỗi trống. ví dụ.
something else
2

Hướng dẫn how do you print back to back in python? - làm thế nào để bạn in ngược trở lại trong python?

kaya3

43,9K4 Huy hiệu vàng57 Huy hiệu bạc87 Huy hiệu đồng4 gold badges57 silver badges87 bronze badges

Đã trả lời ngày 27 tháng 2 năm 2015 lúc 16:44Feb 27, 2015 at 16:44

TULKINRBTULKINRBTulkinRB

5901 Huy hiệu vàng6 Huy hiệu bạc10 Huy hiệu đồng1 gold badge6 silver badges10 bronze badges

1

Nếu bạn muốn ghi đè lên dòng trước đó (thay vì liên tục thêm vào nó), bạn có thể kết hợp

something else
3 với
something else
4 ở cuối câu lệnh in. Ví dụ,

def install_xxx():
    print("Installing XXX...      ", end="", flush=True)

install_xxx()
print("[DONE]")
3

Sẽ đếm 0 đến 9, thay thế số cũ trong bảng điều khiển.

something else
5 sẽ in trên cùng một dòng với bộ đếm cuối cùng, 9.

Trong trường hợp của bạn cho OP, điều này sẽ cho phép bảng điều khiển hiển thị phần trăm hoàn thành cài đặt dưới dạng "thanh tiến trình", trong đó bạn có thể xác định vị trí ký tự bắt đầu và kết thúc và cập nhật các điểm đánh dấu ở giữa.

def install_xxx():
    print("Installing XXX...      ", end="", flush=True)

install_xxx()
print("[DONE]")
4

Đã trả lời ngày 9 tháng 10 năm 2015 lúc 16:18Oct 9, 2015 at 16:18

Dưới đây là phiên bản tương thích 2.7 có nguồn gốc từ phiên bản 3.0 bởi @vadim-zin4uk:

Python 2

def install_xxx():
    print("Installing XXX...      ", end="", flush=True)

install_xxx()
print("[DONE]")
5

Đối với vấn đề đó, giải pháp 3.0 được cung cấp có vẻ hơi đầy hơi. Ví dụ, phương pháp backspace không sử dụng đối số số nguyên và có thể hoàn toàn có thể được thực hiện với hoàn toàn.

Python 3

def install_xxx():
    print("Installing XXX...      ", end="", flush=True)

install_xxx()
print("[DONE]")
6

Điều đó có nghĩa là nó sẽ quay lại con trỏ để bắt đầu, hơn là sẽ in một cái gì đó và sẽ kết thúc trong cùng một dòng. Nếu trong một vòng lặp, nó sẽ bắt đầu in ở cùng một nơi, nó bắt đầu.

Đã trả lời ngày 6 tháng 11 năm 2018 lúc 19:15Jan 10, 2018 at 19:47

SunflorosunfloroDannid

6801 Huy hiệu vàng8 Huy hiệu bạc11 Huy hiệu đồng17 silver badges17 bronze badges

Không có câu trả lời nào làm việc cho tôi vì tất cả họ đều dừng lại cho đến khi gặp phải một dòng mới. Tôi đã viết một người trợ giúp đơn giản:

Để kiểm tra nó:

print 'something',
...
print ' else',
0 là một chức năng trong Python 3. Trong Python 2 (bất kỳ phiên bản nào bạn quan tâm đến việc sử dụng),
import time
import sys

def backspace(n):
    sys.stdout.write((b'\x08' * n).decode()) # use \x08 char to go back   

for i in range(101):                        # for 0 to 100
    s = str(i) + '%'                        # string for output
    sys.stdout.write(s)                     # just print
    sys.stdout.flush()                      # needed for flush when using \x08
    backspace(len(s))                       # back n chars    
    time.sleep(0.2)                         # sleep for 200ms
8 có thể bị buộc vào một hàm bằng cách nhập định nghĩa của nó từ mô -đun
import time
import sys

def backspace(n):
    sys.stdout.write((b'\x08' * n).decode()) # use \x08 char to go back   

for i in range(101):                        # for 0 to 100
    s = str(i) + '%'                        # string for output
    sys.stdout.write(s)                     # just print
    sys.stdout.flush()                      # needed for flush when using \x08
    backspace(len(s))                       # back n chars    
    time.sleep(0.2)                         # sleep for 200ms
9. Lợi ích của hàm
import time
import sys

def backspace(n):
    sys.stdout.write((b'\x08' * n).decode()) # use \x08 char to go back   

for i in range(101):                        # for 0 to 100
    s = str(i) + '%'                        # string for output
    sys.stdout.write(s)                     # just print
    sys.stdout.flush()                      # needed for flush when using \x08
    backspace(len(s))                       # back n chars    
    time.sleep(0.2)                         # sleep for 200ms
8 là bạn có thể chỉ định những gì sẽ in ở cuối, ghi đè hành vi mặc định của
print 'something',
...
print ' else',
2 để in một dòng mới ở cuối mỗi cuộc gọi
print 'something',
...
print ' else',
0.

import time   

def backline():        
    print('\r', end='')                     # use '\r' to go back


for i in range(101):                        # for 0 to 100
    s = str(i) + '%'                        # string for output
    print(s, end='')                        # just print and flush
    backline()                              # back to the beginning of line    
    time.sleep(0.2)                         # sleep for 200ms
3 bảo Python xóa đầu ra của đầu ra tiêu chuẩn, đó là nơi bạn gửi đầu ra với
print 'something',
...
print ' else',
0 trừ khi bạn chỉ định khác. Bạn cũng có thể nhận được hành vi tương tự bằng cách chạy với
import time   

def backline():        
    print('\r', end='')                     # use '\r' to go back


for i in range(101):                        # for 0 to 100
    s = str(i) + '%'                        # string for output
    print(s, end='')                        # just print and flush
    backline()                              # back to the beginning of line    
    time.sleep(0.2)                         # sleep for 200ms
5 hoặc thiết lập biến môi trường
import time   

def backline():        
    print('\r', end='')                     # use '\r' to go back


for i in range(101):                        # for 0 to 100
    s = str(i) + '%'                        # string for output
    print(s, end='')                        # just print and flush
    backline()                              # back to the beginning of line    
    time.sleep(0.2)                         # sleep for 200ms
6, do đó bỏ qua các cuộc gọi
print 'something',
...
print ' else',
5 và
import time   

def backline():        
    print('\r', end='')                     # use '\r' to go back


for i in range(101):                        # for 0 to 100
    s = str(i) + '%'                        # string for output
    print(s, end='')                        # just print and flush
    backline()                              # back to the beginning of line    
    time.sleep(0.2)                         # sleep for 200ms
8. Số tiền bạn đạt được bằng cách làm điều đó gần như chính xác bằng không và không dễ gỡ lỗi nếu bạn thuận tiện quên rằng bạn phải thực hiện bước đó trước khi ứng dụng của bạn hoạt động đúng.

Và một mẫu. Lưu ý rằng điều này chạy hoàn hảo trong Python 2 hoặc 3.

def install_xxx():
    print("Installing XXX...      ", end="", flush=True)

install_xxx()
print("[DONE]")
7

Đã trả lời ngày 25 tháng 10 năm 2017 lúc 18:20Oct 25, 2017 at 18:20

1

Giải pháp này trong Python 3.x Cụ thể:

Khi tôi cần làm điều này, thường tôi sẽ chỉ sử dụng

def install_xxx():
    print("Installing XXX...      ", end="", flush=True)

install_xxx()
print("[DONE]")
8

Ví dụ:

def install_xxx():
    print("Installing XXX...      ", end="", flush=True)

install_xxx()
print("[DONE]")
9

Điều này xuất bản như:

def install_xxx():
   print "Installing XXX...      ",

install_xxx()
print "[DONE]"
0

Không gian trong

import time   

def backline():        
    print('\r', end='')                     # use '\r' to go back


for i in range(101):                        # for 0 to 100
    s = str(i) + '%'                        # string for output
    print(s, end='')                        # just print and flush
    backline()                              # back to the beginning of line    
    time.sleep(0.2)                         # sleep for 200ms
9 có thể được thay thế bằng bất kỳ ký tự nào. Ví dụ,

def install_xxx():
   print "Installing XXX...      ",

install_xxx()
print "[DONE]"
1

Đầu ra nào như:

def install_xxx():
   print "Installing XXX...      ",

install_xxx()
print "[DONE]"
2

Hướng dẫn how do you print back to back in python? - làm thế nào để bạn in ngược trở lại trong python?

Dharman ♦

28.5K21 Huy hiệu vàng78 Huy hiệu bạc129 Huy hiệu đồng21 gold badges78 silver badges129 bronze badges

Đã trả lời ngày 22 tháng 7 năm 2021 lúc 19:39Jul 22, 2021 at 19:39

Alioalioalio

Phù hiệu bằng đồng 11466 bronze badges

print 'something',
...
print ' else',
0 có một tham số tích hợp "kết thúc" theo mặc định được đặt thành
something else
0 gọi
> python test.py
100%
2 thực sự đang gọi
> python test.py
100%
3. Một cách dễ dàng để làm là gọi
> python test.py
100%
4

Ryan Lee

Huy hiệu đồng bạc 1971 Silver81 silver badge8 bronze badges

Đã trả lời ngày 23 tháng 7 năm 2019 lúc 22:35Jul 23, 2019 at 22:35

Hướng dẫn how do you print back to back in python? - làm thế nào để bạn in ngược trở lại trong python?

Chỉ trong trường hợp bạn đã lưu trữ trước các giá trị trong một mảng, bạn có thể gọi chúng theo định dạng sau:

def install_xxx():
   print "Installing XXX...      ",

install_xxx()
print "[DONE]"
3

Đã trả lời ngày 16 tháng 10 năm 2016 lúc 23:20Oct 16, 2016 at 23:20

Đã tìm thấy bài đăng Quora này, với ví dụ này đã làm việc cho tôi (Python 3), gần với những gì tôi cần nó (tức là xóa toàn bộ dòng trước đó).

Ví dụ họ cung cấp:

def install_xxx():
   print "Installing XXX...      ",

install_xxx()
print "[DONE]"
4

Để in trên cùng một dòng, như những người khác đã đề xuất, chỉ cần sử dụng

> python test.py
100%
5

Đã trả lời ngày 14 tháng 11 năm 2019 lúc 18:15Nov 14, 2019 at 18:15

MIRCEAMIRICEAMircea

9241 Huy hiệu vàng13 Huy hiệu bạc17 Huy hiệu đồng1 gold badge13 silver badges17 bronze badges

Tôi đã tìm thấy giải pháp này và nó đang hoạt động trên Python 2.7

def install_xxx():
   print "Installing XXX...      ",

install_xxx()
print "[DONE]"
5

Hướng dẫn how do you print back to back in python? - làm thế nào để bạn in ngược trở lại trong python?

ideasman42

38.3k36 Huy hiệu vàng178 Huy hiệu bạc299 Huy hiệu đồng36 gold badges178 silver badges299 bronze badges

Đã trả lời ngày 7 tháng 12 năm 2016 lúc 12:51Dec 7, 2016 at 12:51

Luis Silvaluis SilvaLuis Silva

91 Huy hiệu bạc3 Huy hiệu đồng1 silver badge3 bronze badges

1