การเขียนเอาต์พุตคอนโซลในที่เดียวกันอาจเป็นเทคนิคที่มีประโยชน์สำหรับนักพัฒนาเมื่อทำงานกับแอปพลิเคชัน 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