ฉันต้องอ่านไฟล์ขนาดใหญ่ทีละบรรทัด ให้บอกว่าไฟล์มีมากกว่า 5GB และฉันต้องอ่านแต่ละบรรทัด แต่เห็นได้ชัดว่าฉันไม่ต้องการใช้readlines()
เพราะจะสร้างรายการที่มีขนาดใหญ่มากในหน่วยความจำ
รหัสด้านล่างจะทำงานอย่างไรสำหรับกรณีนี้ เป็นxreadlines
ตัวเองอ่านหนึ่งโดยหนึ่งในหน่วยความจำ? นิพจน์ตัวสร้างจำเป็นหรือไม่?
f = (line for line in open("log.txt").xreadlines()) # how much is loaded in memory?
f.next()
นอกจากนี้ฉันต้องทำอย่างไรเพื่ออ่านสิ่งนี้ในลำดับย้อนกลับเช่นเดียวกับtail
คำสั่งLinux
ฉันพบ:
http://code.google.com/p/pytailer/
และ
" python head, tail และ backward read โดยบรรทัดของไฟล์ข้อความ "
ทั้งสองทำงานได้ดีมาก!