linecache --- Truy cập ngẫu nhiên vào dòng văn bản¶
Source code: Lib/linecache.py
Mô-đun linecache cho phép người dùng lấy bất kỳ dòng nào từ tệp nguồn Python, đồng thời cố gắng tối ưu hóa nội bộ bằng cách sử dụng bộ đệm, trường hợp phổ biến là nhiều dòng được đọc từ một tệp. Điều này được mô-đun traceback sử dụng để truy xuất các dòng nguồn để đưa vào truy nguyên được định dạng.
Chức năng tokenize.open() được sử dụng để mở tập tin. Hàm này sử dụng tokenize.detect_encoding() để lấy mã hóa tệp; trong trường hợp không có mã thông báo mã hóa, mã hóa tệp mặc định là UTF-8.
Mô-đun linecache xác định các chức năng sau:
- linecache.getline(filename, lineno, module_globals=None)¶
Nhận dòng lineno từ tệp có tên filename. Hàm này sẽ không bao giờ đưa ra ngoại lệ --- nó sẽ trả về
''khi có lỗi (ký tự kết thúc dòng mới sẽ được đưa vào cho các dòng được tìm thấy).Nếu filename biểu thị mô-đun bị đóng băng (bắt đầu bằng
'<frozen '), hàm sẽ cố lấy tên tệp thực từmodule_globals['__file__']nếu module_globals không phải làNone.Nếu không tìm thấy tệp có tên filename, trước tiên, hàm này sẽ kiểm tra PEP 302
__loader__trong module_globals. Nếu có một trình tải như vậy và nó xác định phương thứcget_sourcethì nó sẽ xác định các dòng nguồn (nếuget_source()trả vềNonethì''sẽ được trả về). Cuối cùng, nếu filename là tên tệp tương đối, nó sẽ được tra cứu tương ứng với các mục trong đường dẫn tìm kiếm mô-đun,sys.path.Thay đổi trong phiên bản 3.14: Hỗ trợ filename của các mô-đun bị đóng băng.
- linecache.clearcache()¶
Xóa bộ nhớ đệm. Sử dụng chức năng này nếu bạn không còn cần các dòng từ các tệp đã đọc trước đó bằng
getline().
- linecache.checkcache(filename=None)¶
Kiểm tra tính hợp lệ của bộ đệm. Sử dụng chức năng này nếu các tệp trong bộ nhớ đệm có thể đã thay đổi trên đĩa và bạn yêu cầu phiên bản cập nhật. Nếu filename bị bỏ qua, nó sẽ kiểm tra tất cả các mục trong bộ đệm.
- linecache.lazycache(filename, module_globals)¶
Ghi lại đủ chi tiết về mô-đun không dựa trên tệp để cho phép nhận các dòng của nó sau qua
getline()ngay cả khi module_globals làNonetrong lệnh gọi sau. Điều này tránh thực hiện I/O cho đến khi thực sự cần một dòng mà không cần phải mang mô-đun toàn cục đi khắp nơi vô thời hạn.Added in version 3.5.
Ví dụ:
>>> nhập linecache
>>> linecache.getline(linecache.__file__, 8)
'nhập hệ thống\n'