อ่านไฟล์ใน python อย่างรวดเร็วและมีประสิทธิภาพ
ก่อนหน้านี้นิสัยไม่ดี ชอบเขียนโปรแกรมอ่านไฟล์ประมาณนี้
lines = open('file.txt', 'r').read().split('\n') for line in lines: # do something
คำสั่ง read() แบบไม่กำหนด parameter จะอ่านไฟล์ทั้งหมดเข้ามาไว้ในหน่วยความจำ ถ้าไฟล์มีขนาดเล็ก ก็คงไม่มีปัญหาอะไร แต่เมื่อคืนเขียนโปรแกรมตัดคำไฟล์ใหญ่ประมาณ 64mb ปรากฏว่าโปรแกรมทำงานช้าลงมาก (จากไฟล์เล็กๆ ~7000 คำ/วินาที พอเจอไฟล์ใหญ่ๆเหลือ ~700 คำ/วินาที)
พออ่าน Python Doc แล้วเปลี่ยนวิธีเขียนโปรแกรมอ่านไฟล์เป็นแบบนี้แทน (ซึ่งมีประสิทธิภาพมากกว่า เพราะค่อยๆ อ่านทีละบรรทัด)
f = open('file.txt', 'r') for line in f: # do something f.close()
ปรากฏว่า ไฟล์จะใหญ่แค่ไหน โปรแกรมก็ทำงานที่ความเร็ว ~7000 คำ/วินาที ![]()
ปล. มาเขียนบล็อกไว้เผื่อคนอื่นจะเจอปัญหาโง่ๆ แบบนี้ T_T (หรือไม่เค้าก็คงจะเขียนกันแบบล่างซะส่วนใหญ่ล่ะมั้ง)
ปล2. วิธีอ่านไฟล์แบบล่าง มีปัญหาคือ ถ้าโปรแกรมเราจำเป็นต้องกระโดดไปอ่านข้อความที่บรรทัดนู้นที บรรทัดนี้ทีก็คงจะทำไม่ได้ครับ
เข้ามาเพราะอยากรู้ว่า Python เขาอ่านไฟล์กันยังไง พอดีเคยใช้แต่ fopen ว่ะ
[Reply]
อ่านไฟล์แบบ อันล่าง เท่ดีคับ
[Reply]
ภาษาแม่งแข็งแกร่งเห้ๆ ^^
[Reply]
เมื่ไร try2hack จะมาหนอ อิอิ
[Reply]