Computer >> Máy Tính >  >> Lập trình >> Python

Truy cập ngẫu nhiên vào các dòng văn bản trong Python (linecache)

Mục đích của mô-đun bộ đệm dòng trong thư viện chuẩn của Python là tạo điều kiện truy cập ngẫu nhiên vào bất kỳ tệp văn bản nào, mặc dù mô-đun này được sử dụng rộng rãi bởi mô-đun theo dõi của Python để tạo ngăn xếp dấu vết lỗi. Các dấu ấn đọc tiếp theo được lưu giữ trong bộ nhớ đệm để tiết kiệm thời gian khi đọc các dòng lặp đi lặp lại.

Hàm quan trọng nhất trong mô-đun này là getline () đọc một số dòng được chỉ định từ tệp đã cho. Sau đây là danh sách các chức năng -

getline (tệp, x)

Hàm này trả về dòng thứ x từ tệp. Nếu không có nó sẽ trả về chuỗi trống. Nếu tệp không có trong đường dẫn hiện tại, hàm liên kết để định vị tệp trong thư mục trong sys.path - đường dẫn tìm kiếm mô-đun.

clearcache ()

Nếu hàm prettyprint của hàm getline () trước đó không còn cần thiết nữa, bạn có thể xóa bộ nhớ cache bằng hàm này.

checkcache ()

Chức năng này kiểm tra xem bộ đệm có hợp lệ hay không. Điều này rất hữu ích nếu các tệp trong bộ nhớ cache có thể đã bị thay đổi trên đĩa.

lazycache ()

Tạo bộ nhớ cache cho tên tệp với module_globals. Trình tải mô-đun sẽ chỉ được yêu cầu nguồn khi getlines được gọi, không phải ngay lập tức.

getlines ()

Hàm này trả về các dòng từ tệp ở dạng đối tượng danh sách.

updatecache ()

Hàm này cập nhật các mục nhập trong bộ nhớ cache và trả về một danh sách các dòng.

Để chứng minh việc sử dụng chức năng của bộ đệm dòng, trước tiên chúng tôi xây dựng một tệp văn bản để lưu trữ Zen nổi tiếng của Python (danh sách các nguyên tắc phần mềm ảnh hưởng đến triết lý thiết kế của Python). Đầu ra của 'nhập cái này' được chuyển hướng đến zen.txt bằng mã sau -

import sys, io
zen = io.StringIO()
old_stdout = sys.stdout
sys.stdout = zen
import this
sys.stdout = old_stdout
f=open('zen.txt','w')
f.write(zen.getvalue())
f.close()

Khi đoạn mã trên được thực thi, zen.txt sẽ được tạo trong thư mục hiện tại. Chúng tôi sẽ sử dụng tệp văn bản này để đọc các dòng từ nó với hàm getline ().

Để đọc dòng thứ 4 từ tệp

>>> linecache.getline('zen.txt',4)
'Explicit is better than implicit.\n'

Lưu ý rằng chuỗi trả về kết thúc bằng ký tự dòng mới.

Để hiển thị số dòng từ 4 đến 10, hãy sử dụng toán tử lát trên danh sách được trả về bởi hàm getlines ()

>>> linecache.getlines('zen.txt')[4:10]
['Simple is better than complex.\n', 'Complex is better than complicated.\n', 'Flat is better than nested.\n', 'Sparse is better than dense.\n', 'Readability counts.\n', "Special cases aren't special enough to break the rules.\n"]

Trong bài viết này, chúng ta đã tìm hiểu về mô-đun linecache trong thư viện chuẩn Python.