แก้ไขแล้ว: เขียนเอาต์พุตคอนโซลในตำแหน่งเดียวกัน

การเขียนเอาต์พุตคอนโซลในที่เดียวกันอาจเป็นเทคนิคที่มีประโยชน์สำหรับนักพัฒนาเมื่อทำงานกับแอปพลิเคชัน Python โดยเฉพาะอย่างยิ่งเมื่อพัฒนาอินเทอร์เฟซผู้ใช้ในบรรทัดคำสั่ง การสร้างตัวบ่งชี้ความคืบหน้า และการอัปเดตข้อมูลคอนโซลแบบเรียลไทม์ บทความนี้จะกล่าวถึงวิธีแก้ปัญหาสำหรับการเขียนทับเอาต์พุตคอนโซล อธิบายโค้ดทีละขั้นตอน และเจาะลึกไลบรารีเฉพาะและฟังก์ชัน Python ในตัวที่ทำให้งานนี้เป็นไปได้

เพื่อให้บรรลุเป้าหมายนี้ เราสามารถใช้ไลบรารี Python ที่มีชื่อเสียง “คำสาป” ซึ่งได้รับการออกแบบมาโดยเฉพาะสำหรับการสร้างแอปพลิเคชันที่ใช้เทอร์มินัลซึ่งขึ้นอยู่กับการใช้งานอินเทอร์เฟซผู้ใช้แบบข้อความเป็นอย่างมาก อย่างไรก็ตาม เพื่อความเรียบง่ายและง่ายต่อการทำความเข้าใจ เราจะใช้โมดูล “sys” และ “time” ในตัวของ Python เพื่อเขียนทับเอาต์พุตคอนโซล

เขียนทับเอาต์พุตคอนโซลใน Python

แนวคิดหลักคือการใช้ sys.stdout.write() ซึ่งทำให้เราสามารถพิมพ์เป็นบรรทัดเดียวกันได้พร้อมกับ คืนรถ อักขระ (“r”) เพื่อกลับไปยังจุดเริ่มต้นของบรรทัด ซึ่งช่วยให้เราสามารถเขียนทับเอาต์พุตได้อย่างมีประสิทธิภาพ

นี่คือตัวอย่างการเขียนทับเอาต์พุตคอนโซลโดยใช้ Python:

import time
import sys

for i in range(10):
    sys.stdout.write("rStep: %d" % i)
    sys.stdout.flush()
    time.sleep(1)

คำอธิบายทีละขั้นตอนของรหัส

1. ขั้นแรก นำเข้าโมดูลที่จำเป็น:

   import time
   import sys
   

โครงการ เวลา โมดูลจะถูกใช้เพื่อเพิ่มความล่าช้าระหว่างการวนซ้ำและ SYS โมดูลจะถูกใช้เพื่อเขียนเอาต์พุตไปยังคอนโซล

2. จากนั้น สร้างลูปเพื่อวนซ้ำช่วงตัวเลข โดยจำลองตัวนับความคืบหน้า:

   for i in range(10):
   

ลูปนี้จะวนซ้ำจาก 0 ถึง 9 โดยทำงานอย่างมีประสิทธิภาพสิบครั้ง

3. ภายในลูป ให้ใช้ sys.stdout.write() ฟังก์ชั่นเพื่อพิมพ์หมายเลขการวนซ้ำปัจจุบันพร้อมกับป้ายกำกับ:

   sys.stdout.write("rStep: %d" % i)
   

อักขระ "r" คือการขึ้นบรรทัดใหม่ซึ่งทำหน้าที่รีเซ็ตไปที่จุดเริ่มต้นของบรรทัด ซึ่งช่วยให้เอาต์พุตถัดไปเขียนทับอักขระปัจจุบันได้

4. ตรวจสอบให้แน่ใจว่าใช้ sys.stdout.flush() หลังจากเขียนถึงคอนโซล:

   sys.stdout.flush()
   

ฟังก์ชันฟลัช() จะล้างบัฟเฟอร์ภายในและทำให้มั่นใจว่าเอาต์พุตจะแสดงทันที

5. สุดท้าย เพิ่มการหน่วงเวลาโดยใช้ เวลานอน () ฟังก์ชั่น:

   time.sleep(1)
   

การหยุดชั่วคราวนี้จะคงอยู่เป็นเวลาหนึ่งวินาที ทำให้ง่ายต่อการสังเกตเอาต์พุตที่ถูกเขียนทับ

ตอนนี้คุณสามารถดูได้ว่าเอาต์พุตคอนโซลถูกเขียนทับในแต่ละการวนซ้ำอย่างไร

ภาพรวมของไลบรารี “sys”

โครงการ SYS ไลบรารี่เป็นโมดูล Python ในตัวที่ทรงพลังที่ให้การเข้าถึงภายในของล่ามและพารามิเตอร์เฉพาะระบบต่างๆ ในบทความนี้เราเน้นไปที่การใช้ sys.stdout.write() และ sys.stdout.flush() ฟังก์ชั่นเพื่อเขียนทับเอาต์พุตคอนโซล อย่างไรก็ตาม ไลบรารี “sys” มีฟังก์ชันอื่นๆ มากมาย เช่น อาร์กิวเมนต์บรรทัดคำสั่ง ลำดับไบต์ ข้อยกเว้น และเส้นทางที่กำหนดไว้ล่วงหน้า

ภาพรวมของห้องสมุด “เวลา”

โครงการ เวลา ไลบรารี่เป็นอีกโมดูล Python ในตัวที่มีฟังก์ชั่นที่หลากหลายที่เกี่ยวข้องกับการจัดการเวลาและการประมวลผล ในตัวอย่างของเรา เราใช้ เวลานอน () ฟังก์ชันเพื่อสร้างความล่าช้าระหว่างการวนซ้ำ ไลบรารี “เวลา” ยังมีเครื่องมืออื่นๆ สำหรับการวัดเวลาดำเนินการ การแปลงรูปแบบเวลา และรับเวลาปัจจุบัน โมดูลนี้จำเป็นสำหรับนักพัฒนาที่ทำงานกับฟังก์ชันที่เกี่ยวข้องกับเวลาหรือการกำหนดเวลางานในแอปพลิเคชัน Python

กระทู้ที่เกี่ยวข้อง:

แสดงความคิดเห็น