Python - การอ่านไฟล์ย้อนหลัง

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

pip install file-read-backwards

แต่ก่อนที่จะอ่านไฟล์ย้อนหลังเรามาอ่านเนื้อหาของไฟล์ทีละบรรทัดเพื่อที่เราจะได้เปรียบเทียบผลลัพธ์หลังจากการอ่านย้อนหลัง

with open ("Path\GodFather.txt", "r") as BigFile:
    data=BigFile.readlines()
# Print each line
	for i in range(len(data)):
    print "Line No- ",i 
    print data[i]

เมื่อเรารันโปรแกรมข้างต้นเราจะได้ผลลัพธ์ดังต่อไปนี้ -

Line No-  0
Vito Corleone is the aging don (head) of the Corleone Mafia Family. 
Line No-  1
His youngest son Michael has returned from WWII just in time to see the wedding of Connie Corleone (Michael's sister) to Carlo Rizzi. 
Line No-  2
All of Michael's family is involved with the Mafia, but Michael just wants to live a normal life. Drug dealer Virgil Sollozzo is looking for Mafia families to offer him protection in exchange for a profit of the drug money. 
Line No-  3
He approaches Don Corleone about it, but, much against the advice of the Don's lawyer Tom Hagen, the Don is morally against the use of drugs, and turns down the offer.
Line No-  4
This does not please Sollozzo, who has the Don shot down by some of his hit men. 
Line No-  5
The Don barely survives, which leads his son Michael to begin a violent mob war against Sollozzo and tears the Corleone family apart.

การอ่านบรรทัดย้อนหลัง

ตอนนี้ในการอ่านไฟล์ย้อนหลังเราใช้โมดูลที่ติดตั้ง

from file_read_backwards import FileReadBackwards
with FileReadBackwards("Path\GodFather.txt", encoding="utf-8") as BigFile:
# getting lines by lines starting from the last line up
    for line in BigFile:
        print line

เมื่อเรารันโปรแกรมข้างต้นเราจะได้ผลลัพธ์ดังต่อไปนี้ -

The Don barely survives, which leads his son Michael to begin a violent mob war against Sollozzo and tears the Corleone family apart.
This does not please Sollozzo, who has the Don shot down by some of his hit men. 
He approaches Don Corleone about it, but, much against the advice of the Don's lawyer Tom Hagen, the Don is morally against the use of drugs, and turns down the offer.
All of Michael's family is involved with the Mafia, but Michael just wants to live a normal life. Drug dealer Virgil Sollozzo is looking for Mafia families to offer him protection in exchange for a profit of the drug money. 
His youngest son Michael has returned from WWII just in time to see the wedding of Connie Corleone (Michael's sister) to Carlo Rizzi. 
Vito Corleone is the aging don (head) of the Corleone Mafia Family.

คุณสามารถตรวจสอบว่าได้อ่านบรรทัดในลำดับย้อนกลับ

การอ่านคำย้อนหลัง

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

import nltk
from file_read_backwards import FileReadBackwards
with FileReadBackwards("Path\GodFather.txt", encoding="utf-8") as BigFile:
# getting lines by lines starting from the last line up
# And tokenizing with applying reverse()
    for line in BigFile:
        word_data= line
        nltk_tokens = nltk.word_tokenize(word_data)
        nltk_tokens.reverse()
        print (nltk_tokens)

เมื่อเรารันโปรแกรมข้างต้นเราจะได้ผลลัพธ์ดังต่อไปนี้ -

['.', 'apart', 'family', 'Corleone', 'the', 'tears', 'and', 'Sollozzo', 'against', 'war', 'mob', 'violent', 'a', 'begin', 'to', 'Michael', 'son', 'his', 'leads', 'which', ',', 'srvives', 'barely', 'Don', 'The']
['.', 'men', 'hit', 'his', 'of', 'some', 'by', 'down', 'shot', 'Don', 'the', 'has', 'who', ',', 'Sollozzo', 'please', 'not', 'does', 'This']
['.', 'offer', 'the', 'down', 'trns', 'and', ',', 'drgs', 'of', 'se', 'the', 'against', 'morally', 'is', 'Don', 'the', ',', 'Hagen', 'Tom', 'lawyer', "'s", 'Don', 'the', 'of', 'advice', 'the', 'against', 'mch', ',', 'bt', ',', 'it', 'abot', 'Corleone', 'Don', 'approaches', 'He']
['.', 'money', 'drg', 'the', 'of', 'profit', 'a', 'for', 'exchange', 'in', 'protection', 'him', 'offer', 'to', 'families', 'Mafia', 'for', 'looking', 'is', 'Sollozzo', 'Virgil', 'dealer', 'Drg', '.', 'life', 'normal', 'a', 'live', 'to', 'wants', 'jst', 'Michael', 'bt', ',', 'Mafia', 'the', 'with', 'involved', 'is', 'family', "'s", 'Michael', 'of', 'All']
['.', 'Rizzi', 'Carlo', 'to', ')', 'sister', "'s", 'Michael', '(', 'Corleone', 'Connie', 'of', 'wedding', 'the', 'see', 'to', 'time', 'in', 'jst', 'WWII', 'from', 'retrned', 'has', 'Michael', 'son', 'yongest', 'His']
['.', 'Family', 'Mafia', 'Corleone', 'the', 'of', ')', 'head', '(', 'don', 'aging', 'the', 'is', 'Corleone', 'Vito']