Учебники

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)

Когда мы запускаем вышеуказанную программу, мы получаем следующий вывод: