Python không đọc dòng cuối cùng của tệp

Trong bài viết này, chúng ta sẽ thảo luận về một giải pháp tiết kiệm bộ nhớ để đọc dòng cuối cùng hoặc N dòng cuối cùng từ tệp văn bản hoặc tệp CSV trong python. Sau đó, chúng ta cũng sẽ xem cách chỉ thực dòng cuối cùng hoặc kiểm tra xem dòng cuối cùng trong tệp có khớp với dòng đã cho hay không

Chúng tôi đã tạo một chức năng để đọc N dòng cuối cùng từ tệp văn bản,

import os


def get_last_n_lines[file_name, N]:
    # Create an empty list to keep the track of last N lines
    list_of_lines = []
    # Open file for reading in binary mode
    with open[file_name, 'rb'] as read_obj:
        # Move the cursor to the end of the file
        read_obj.seek[0, os.SEEK_END]
        # Create a buffer to keep the last read line
        buffer = bytearray[]
        # Get the current position of pointer i.e eof
        pointer_location = read_obj.tell[]
        # Loop till pointer reaches the top of the file
        while pointer_location >= 0:
            # Move the file pointer to the location pointed by pointer_location
            read_obj.seek[pointer_location]
            # Shift pointer location by -1
            pointer_location = pointer_location -1
            # read that byte / character
            new_byte = read_obj.read[1]
            # If the read byte is new line character then it means one line is read
            if new_byte == b'\n':
                # Save the line in list of lines
                list_of_lines.append[buffer.decode[][::-1]]
                # If the size of list reaches N, then return the reversed list
                if len[list_of_lines] == N:
                    return list[reversed[list_of_lines]]
                # Reinitialize the byte array to save next line
                buffer = bytearray[]
            else:
                # If last read character is not eol then add it in buffer
                buffer.extend[new_byte]

        # As file is read completely, if there is still data in buffer, then its first line.
        if len[buffer] > 0:
            list_of_lines.append[buffer.decode[][::-1]]

    # return the reversed list
    return list[reversed[list_of_lines]]

Hàm này chấp nhận 2 đối số i. e. đường dẫn tệp dưới dạng chuỗi và số nguyên N [số dòng được đọc từ cuối cùng]. Nó trả về một danh sách N dòng cuối cùng của tệp

Chức năng này hoạt động như thế nào?

Trước hết, nó tạo một danh sách trống để lưu trữ N dòng cuối cùng của tệp. Sau đó, nó mở tệp đã cho để đọc ở định dạng nhị phân và bắt đầu đọc từng byte từ cuối tệp cho đến khi bắt đầu tệp i. e. theo hướng ngược lại. Trong khi đọc byte, ngay khi nó gặp một ký tự dòng mới '\n', điều đó có nghĩa là một dòng đã được đọc thành công. Sau đó, nó đảo ngược chuỗi và thêm chuỗi/dòng đó vào danh sách và tiếp tục đọc các byte tiếp theo từ tệp theo hướng ngược lại cho đến khi đạt đến đầu tệp hoặc kích thước danh sách của chúng tôi trở thành N

quảng cáo

Nó bên trong sử dụng hai chức năng tôi. e

  • file_object. kể[]. Nó cung cấp vị trí hiện tại của con trỏ trong tệp, tôi. e. số byte từ đầu tệp
  • file_object. tìm kiếm [bù, điểm tham chiếu]. Nó di chuyển con trỏ đến điểm tham chiếu + offset

 Hãy sử dụng hàm đã tạo ở trên để tìm nạp N dòng cuối cùng từ một tệp văn bản,

Giả sử chúng ta có một tệp văn bản 'mẫu. txt’ và nội dung của nó là,

Hello this is a sample file
It contains sample text
Dummy Line A
Dummy Line B
Dummy Line C
This is the end of file

Bây giờ, chúng tôi sẽ tìm nạp N dòng cuối cùng từ tệp này,

Nhận 3 dòng cuối cùng của tệp văn bản dưới dạng danh sách trong python

# Get last three lines from file 'sample.txt'
last_lines = get_last_n_lines["sample.txt", 3]

print['Last 3 lines of File:']
# Iterate over the list of last 3 lines and print one by one
for line in last_lines:
    print[line]

Đầu ra.
______3
Nó trả về 3 dòng cuối cùng từ tệp 'sample. txt’ dưới dạng danh sách các chuỗi và sau đó chúng tôi lặp lại danh sách để in 3 dòng cuối cùng của tệp.

Hãy xem một ví dụ khác,

Nhận 5 dòng cuối cùng của tệp văn bản hoặc tệp CSV

# get last five lines from the file
last_lines = get_last_n_lines["sample.txt", 5]

print['Last 5 lines of File:']
# Iterate over the list of last 5 lines and print one by one
for line in last_lines:
    print[line]

Đầu ra.
______5
Hiệu quả của giải pháp.

Đây là một giải pháp hiệu quả vì chúng tôi chỉ đọc các dòng từ cuối cùng và tối đa chỉ có N dòng trong bộ nhớ tại một thời điểm

Vì vậy, ngay cả khi chúng tôi có tệp lớn với kích thước tính bằng GB và chúng tôi muốn đọc 10 dòng cuối cùng, thì giải pháp này sẽ cho kết quả hiệu quả vì chúng tôi đã bắt đầu từ cuối cùng và chỉ đọc cho đến 10 dòng cuối cùng, không quan trọng kích thước của tệp lớn như thế nào.

Đọc dòng cuối cùng của tệp văn bản hoặc tệp CSV hoặc tệp nhật ký

chúng ta có thể sử dụng chức năng tương tự, để đọc dòng cuối cùng của tệp. Chúng ta cần chuyển 1 làm đối số N trong hàm get_last_n_lines[] và nó sẽ trả về một danh sách chứa dòng cuối cùng. Ví dụ:

# get last line of the file
last_lines = get_last_n_lines["sample.txt", 1]

print['Last Line of File:']
print[last_lines[0]]

Đầu ra.
______7
Đây là cách chúng tôi đọc và in dòng cuối cùng từ một tệp. Đây cũng là một giải pháp hiệu quả ngay cả trong trường hợp tệp lớn vì chúng tôi bắt đầu đọc từ cuối và theo hướng ngược lại.

Kiểm tra xem dòng cuối cùng trong tệp có khớp với dòng đã cho không

Hãy kiểm tra xem dòng cuối cùng trong tệp 'sample. txt’ chính xác là ‘Đây là phần cuối của tệp’,

# get last line of the file
last_lines = get_last_n_lines["sample.txt", 1]

# Match the returned last line of file with the give string
if last_lines[0] == 'This is the end of file' :
    print['Last Line matched']

Đầu ra.
______9
Chứng minh rằng dòng cuối cùng của tệp khớp với chuỗi đã cho.

Kiểm tra xem dòng cuối cùng trong tệp có chứa chuỗi con đã cho không

Hãy kiểm tra xem dòng cuối cùng của tệp 'sample. txt’ chứa chuỗi ‘is’

Hello this is a sample file
It contains sample text
Dummy Line A
Dummy Line B
Dummy Line C
This is the end of file
0
Đầu ra.
______11
Nó chứng tỏ rằng dòng cuối cùng của tệp bao gồm chuỗi con đã cho.

Ví dụ đầy đủ như sau,

Hello this is a sample file
It contains sample text
Dummy Line A
Dummy Line B
Dummy Line C
This is the end of file
2
 

đầu ra

O

Hướng dẫn về Pandas -Tìm hiểu Phân tích dữ liệu với Python

 
  • Hướng dẫn Pandas Phần #1 - Giới thiệu về Phân tích dữ liệu với Python
  • Hướng dẫn Pandas Phần #2 - Khái niệm cơ bản về Pandas Series
  • Hướng dẫn Pandas Phần #3 - Nhận & Đặt giá trị chuỗi
  • Pandas Tutorial Part #4 - Thuộc tính & phương thức của Pandas Series
  • Hướng dẫn về Pandas Phần #5 - Thêm hoặc xóa các thành phần của Pandas Series
  • Hướng dẫn về Pandas Phần #6 - Giới thiệu về DataFrame
  • Hướng dẫn về Pandas Phần #7 - DataFrame. loc[] - Chọn Hàng/Cột theo Lập chỉ mục
  • Hướng dẫn về Pandas Phần #8 - DataFrame. iloc[] - Chọn Hàng/Cột theo Tên nhãn
  • Hướng dẫn về gấu trúc Phần #9 - Lọc các hàng trong khung dữ liệu
  • Hướng dẫn Pandas Phần #10 - Thêm/Xóa Hàng & Cột DataFrame
  • Hướng dẫn về Pandas Phần #11 - Các thuộc tính & phương thức DataFrame
  • Hướng dẫn Pandas Phần #12 - Xử lý dữ liệu bị thiếu hoặc giá trị NaN
  • Hướng dẫn về Pandas Phần #13 - Lặp lại các Hàng & Cột của DataFrame
  • Hướng dẫn Pandas Phần #14 - Sắp xếp DataFrame theo Hàng hoặc Cột
  • Hướng dẫn về gấu trúc Phần #15 - Hợp nhất hoặc ghép các khung dữ liệu
  • Hướng dẫn về Pandas Phần #16 - DataFrame GroupBy được giải thích bằng các ví dụ
 

Bạn đang muốn tạo dựng sự nghiệp trong Khoa học dữ liệu với Python?

Khoa học dữ liệu là tương lai và tương lai là ở đây ngay bây giờ. Các nhà khoa học dữ liệu hiện là những chuyên gia được tìm kiếm nhiều nhất hiện nay. Để trở thành một Nhà khoa học dữ liệu giỏi hoặc để chuyển đổi nghề nghiệp trong Khoa học dữ liệu, người ta phải sở hữu bộ kỹ năng phù hợp. Chúng tôi đã tuyển chọn danh sách Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với Python. Các khóa học này sẽ dạy cho bạn các công cụ lập trình cho Khoa học dữ liệu như Pandas, NumPy, Matplotlib, Seaborn và cách sử dụng các thư viện này để triển khai các mô hình Máy học

Kiểm tra Đánh giá chi tiết về Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với Python

Hãy nhớ rằng, Khoa học dữ liệu đòi hỏi rất nhiều kiên nhẫn, bền bỉ và thực hành. Vì vậy, hãy bắt đầu học ngay hôm nay

Có EOF trong Python không?

EOF là viết tắt của End of File trong Python . EOF không mong đợi ngụ ý rằng trình thông dịch đã đến cuối chương trình của chúng tôi trước khi thực thi tất cả mã. Lỗi này có thể xảy ra khi. chúng tôi không thể khai báo câu lệnh cho vòng lặp [ while / for ]

readline[] có lấy \n ở cuối dòng không?

Phương thức readline đọc một dòng từ tệp và trả về dưới dạng một chuỗi. Chuỗi do readline trả về sẽ chứa ký tự xuống dòng ở cuối .

Chủ Đề