Saya baru mengenal python dan sedang menulis beberapa skrip untuk mengotomatisasi pengunduhan file dari server FTP, dll. Saya ingin menunjukkan progres pengunduhan, tetapi saya ingin tetap pada posisi yang sama, seperti:
keluaran:
Mengunduh File FooFile.txt [47%]
Saya mencoba menghindari sesuatu seperti ini:
Downloading File FooFile.txt [47%]
Downloading File FooFile.txt [48%]
Downloading File FooFile.txt [49%]
Bagaimana saya harus melakukan ini?
Gandakan : Bagaimana saya bisa mencetak pada baris saat ini dalam aplikasi baris perintah?
python
console-output
scottm
sumber
sumber
Jawaban:
Anda juga dapat menggunakan carriage return:
sumber
\r
di awal baris, dan menambahkan\x1b[K
untuk menghapus teks sebelumnya.print("sample text", end='\r", flush=True)
Python 2
Saya suka yang berikut ini:
Demo:
Python 3
Demo:
PyCharm Debugger Console dengan Python 3
sumber
Gunakan perpustakaan penanganan terminal seperti modul kutukan :
sumber
Cetak karakter backspace
\b
beberapa kali, dan kemudian timpa nomor lama dengan nomor baru.sumber
print 'Downloading.... \r'
) Juga tidak menghapus data sebelumnya, tetapi mencegah harus mengetahui seberapa jauh cadangannya.sumber
Untuk Python 3xx:
sumber
Solusi rapi yang telah bekerja untuk saya adalah:
The
sys.stdout.flush
penting jika tidak akan benar-benar kikuk danprint("")
pada loop keluar juga penting.UPDATE : Seperti yang disebutkan dalam komentar,
print
juga memilikiflush
argumen. Jadi yang berikut ini juga akan berfungsi:sumber
flush=True
untukprint
, jadi tidak perlu untuksys.stdout.flush()
panggilan ekstra .sumber