如何使用 python 反向读取文件?我想从最后一行到第一行读取文件。
要在 Python 中以相反的顺序(从最后一行到第一行)读取文件,可以使用多种方法。以下是一些常见的方法:
reversed()
readlines()
此方法将所有行读入内存,然后按相反的顺序处理它们。
# Method 1: Using reversed() and readlines() with open('yourfile.txt', 'r') as file: lines = file.readlines() for line in reversed(lines): print(line, end='') # Using end='' to avoid adding extra newlines
deque
collections
如果文件很大,将所有行读入内存可能不可行。您可以使用deque一次只将一定数量的行保留在内存中。
from collections import deque # Method 2: Using deque def read_file_in_reverse(filename): with open(filename, 'r') as file: buffer = deque(file, maxlen=1024) # Adjust maxlen as needed while buffer: line = buffer.pop() print(line, end='') read_file_in_reverse('yourfile.txt')
seek()
tell()
此方法使用seek()和tell()函数按字节向后读取文件。
# Method 3: Using seek() and tell() def read_file_in_reverse(filename): with open(filename, 'rb') as file: file.seek(0, os.SEEK_END) position = file.tell() line = '' while position >= 0: file.seek(position) char = file.read(1) if char == b'\n': print(line[::-1]) line = '' else: line += char.decode() position -= 1 if line: print(line[::-1]) read_file_in_reverse('yourfile.txt')
根据文件的大小和性能要求选择最适合您需求的方法。