Hướng dẫn how do i read the last line of a file in python? - làm cách nào để đọc dòng cuối cùng của tệp trong python?

32

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có hai yêu cầu.

Yêu cầu đầu tiên-Tôi muốn đọc dòng cuối cùng của một tệp và gán giá trị cuối cùng cho một biến trong Python.-I want to read the last line of a file and assign the last value to a variable in python.

Yêu cầu thứ hai--

Đây là tập tin mẫu của tôi.



Từ tệp này, tôi muốn đọc nội dung i.e fileName.txt sẽ là sau ____ 11. Và muốn gán giá trị đó cho một biến trong Python.filename.txt which will be after

with open['filename.txt'] as f:
    for line in f:
        pass
    last_line = line
1.And want to assign that value to a variable in python.

Đã hỏi ngày 16 tháng 9 năm 2017 lúc 21:16Sep 16, 2017 at 21:16

1

Một giải pháp đơn giản, không yêu cầu lưu trữ toàn bộ tệp trong bộ nhớ [ví dụ với

with open['filename.txt'] as f:
    for line in f:
        pass
    last_line = line
2 hoặc cấu trúc tương đương]:

with open['filename.txt'] as f:
    for line in f:
        pass
    last_line = line

Đối với các tệp lớn sẽ hiệu quả hơn khi tìm đến cuối tệp và di chuyển về phía sau để tìm một dòng mới, ví dụ:

import os

with open['filename.txt', 'rb'] as f:
    try:  # catch OSError in case of a one line file 
        f.seek[-2, os.SEEK_END]
        while f.read[1] != b'\n':
            f.seek[-2, os.SEEK_CUR]
    except OSError:
        f.seek[0]
    last_line = f.readline[].decode[]

Lưu ý rằng tệp phải được mở ở chế độ nhị phân, nếu không, sẽ không thể tìm kiếm từ cuối.

Đã trả lời ngày 20 tháng 1 năm 2019 lúc 17:16Jan 20, 2019 at 17:16

Eugene Yarmasheugene YarmashEugene Yarmash

135K37 Huy hiệu vàng309 Huy hiệu bạc367 Huy hiệu đồng37 gold badges309 silver badges367 bronze badges

6

Tại sao bạn không đọc tất cả các dòng và lưu trữ dòng cuối cùng cho biến?

with open['filename.txt', 'r'] as f:
    last_line = f.readlines[][-1]

Alex Waygood

5.2263 huy hiệu vàng18 Huy hiệu bạc44 Huy hiệu đồng3 gold badges18 silver badges44 bronze badges

Đã trả lời ngày 16 tháng 9 năm 2017 lúc 21:28Sep 16, 2017 at 21:28

gpopidesgpopidesgpopides

6445 Huy hiệu bạc12 Huy hiệu Đồng5 silver badges12 bronze badges

2

Thực hiện kiểm tra kích thước và tìm kiếm ngược một số byte nhất định từ cuối tệp nếu nó chứa ít nhất nhiều byte:

  with open[filename, 'rb'] as myfile:
      if os.path.getsize[filename] > 200:
         myfile.seek[-200, 2]
      line = myfile.readlines[][-1].decode["utf-8"]

Mở ở chế độ nhị phân là cần thiết trong Python3, không thể tìm kiếm kết hợp cuối không khác. myfile.seek [-200, 2] sẽ đặt con trỏ tệp hiện tại 200 ký tự trước khi kết thúc tệp [2], sau đó dòng cuối cùng [-1] được lấy từ các đường đọc [] và được giải mã.

Đã trả lời ngày 4 tháng 6 năm 2021 lúc 11:59Jun 4, 2021 at 11:59

Trên các hệ thống có lệnh

with open['filename.txt'] as f:
    for line in f:
        pass
    last_line = line
3, bạn có thể sử dụng
with open['filename.txt'] as f:
    for line in f:
        pass
    last_line = line
3, đối với các tệp lớn sẽ làm giảm sự cần thiết của việc đọc toàn bộ tệp.

from subprocess import Popen, PIPE
f = 'yourfilename.txt'
# Get the last line from the file
p = Popen[['tail','-1',f],shell=False, stderr=PIPE, stdout=PIPE]
res,err = p.communicate[]
if err:
    print [err.decode[]]
else:
    # Use split to get the part of the line that you require
    res = res.decode[].split['location="'][1].strip[].split['"'][0]
    print [res]

Lưu ý: Lệnh

with open['filename.txt'] as f:
    for line in f:
        pass
    last_line = line
5 chỉ được yêu cầu cho
with open['filename.txt'] as f:
    for line in f:
        pass
    last_line = line
6

res = res.split['location="'][1].strip[].split['"'][0]

sẽ làm việc cho

with open['filename.txt'] as f:
    for line in f:
        pass
    last_line = line
7

Đã trả lời ngày 17 tháng 9 năm 2017 lúc 8:52Sep 17, 2017 at 8:52

Rolf of Saxonyrolf của SachsenRolf of Saxony

20.2k3 Huy hiệu vàng35 Huy hiệu bạc54 Huy hiệu đồng3 gold badges35 silver badges54 bronze badges

Anh ta không chỉ hỏi làm thế nào để đọc các dòng trong tệp, hoặc làm thế nào để đọc dòng cuối cùng thành một biến. Anh ta cũng đang hỏi làm thế nào để phân tích một chuỗi con từ dòng cuối cùng, chứa giá trị mục tiêu của anh ta.

Đây là một cách. Đó có phải là cách ngắn nhất? Không, nhưng nếu bạn không biết cách cắt dây, bạn nên bắt đầu bằng cách tìm hiểu từng chức năng tích hợp được sử dụng ở đây. Mã này sẽ nhận được những gì bạn muốn:

# Open the file
myfile = open["filename.txt", "r"]
# Read all the lines into a List
lst = list[myfile.readlines[]]
# Close the file
myfile.close[]
# Get just the last line
lastline = lst[len[lst]-1]
# Locate the start of the label you want, 
# and set the start position at the end 
# of the label:
intStart = lastline.find['location="'] + 10
# snip off a substring from the 
# target value to the end [this is called a slice]:
sub = lastline[intStart:]
# Your ending marker is now the 
# ending quote ["] that is located 
# at the end of your target value.
# Get it's index.
intEnd = sub.find['"']
# Finally, grab the value, using 
# another slice operation.
finalvalue = sub[0:intEnd]
print finalvalue

Đầu ra lệnh in sẽ trông như thế này:

filename.txt

Các chủ đề được đề cập ở đây:

  • Đọc tệp văn bản
  • Lập danh sách Python các dòng từ nội dung, để dễ dàng có được dòng cuối cùng bằng cách sử dụng chỉ mục không dựa trên không
    with open['filename.txt'] as f:
        for line in f:
            pass
        last_line = line
    
    8.
  • Sử dụng
    with open['filename.txt'] as f:
        for line in f:
            pass
        last_line = line
    
    9 để lấy vị trí chỉ mục của chuỗi trong chuỗi
  • Sử dụng
    import os
    
    with open['filename.txt', 'rb'] as f:
        try:  # catch OSError in case of a one line file 
            f.seek[-2, os.SEEK_END]
            while f.read[1] != b'\n':
                f.seek[-2, os.SEEK_CUR]
        except OSError:
            f.seek[0]
        last_line = f.readline[].decode[]
    
    0 để có được chất nền

Tất cả các chủ đề này đều nằm trong tài liệu Python - không có gì thêm ở đây và không cần nhập khẩu để sử dụng các chức năng tích hợp được sử dụng ở đây.

Chúc mừng, -= Cameron
-=Cameron

Đã trả lời ngày 16 tháng 9 năm 2017 lúc 21:58Sep 16, 2017 at 21:58

Tổng quát để đọc dòng thứ n đến cuối cùng

Như nhiều người khác đã nói, đối với các tệp lớn, bất kỳ cách tiếp cận nào không tìm đến cuối cùng hoặc bắt đầu từ cuối tệp đều không hiệu quả. Cách tiếp cận tìm kiếm câu trả lời hàng đầu là tuyệt vời mặc dù. Nếu bất cứ ai khác đang tìm kiếm một giải pháp đọc dòng thứ n đến cuối cùng của tệp, thì đây là một giải pháp tôi đã viết. Cũng rất nhanh và hiệu quả cho các tệp lớn [lấy theo MS cho tệp 7GB trên mạng].

def read_n_to_last_line[filename, n = 1]:
    """Returns the nth before last line of a file [n=1 gives last line]"""
    num_newlines = 0
    with open[filename, 'rb'] as f:
        try:
            f.seek[-2, os.SEEK_END]    
            while num_newlines < n:
                f.seek[-2, os.SEEK_CUR]
                if f.read[1] == b'\n':
                    num_newlines += 1
        except OSError:
            f.seek[0]
        last_line = f.readline[].decode[]
    return last_line

Đã trả lời ngày 1 tháng 8 lúc 15:07Aug 1 at 15:07

Bạn có thể đọc và chỉnh sửa tất cả các dòng làm một cái gì đó như:

with open['filename.txt'] as f:
    for line in f:
        pass
    last_line = line
0

Đã trả lời ngày 16 tháng 9 năm 2017 lúc 21:40Sep 16, 2017 at 21:40

3

Làm thế nào để bạn chọn dòng cuối cùng của một tệp trong Python?

Làm thế nào để có được các dòng N cuối cùng của một tệp trong Python..
a_file = open ["example.txt", "r"].
dòng = a_file. Đoạn đọc [].
last_lines = dòng [-5:].
print[last_lines].
một tập tin. gần[].

Làm cách nào để xem dòng cuối cùng của một tệp?

Để xem xét một vài dòng cuối cùng của một tệp, hãy sử dụng lệnh đuôi.Đuôi hoạt động theo cách tương tự như đầu: gõ đuôi và tên tệp để xem 10 dòng cuối cùng của tệp đó hoặc nhập tên tệp Đuôi để xem các dòng số cuối cùng của tệp.use the tail command. tail works the same way as head: type tail and the filename to see the last 10 lines of that file, or type tail -number filename to see the last number lines of the file.

Làm cách nào để đọc dòng đầu tiên và cuối cùng của một tệp trong Python?

Sử dụng File.Readline [] để đọc một dòng từ tệp cuộc gọi tệp.Readline [] để có được dòng đầu tiên của tệp và lưu trữ nó trong một biến First_line.Tạo một biến thứ hai, last_line và lặp qua tất cả các dòng trong tệp cho đến khi kết thúc. readline[] to read a single line from a file Call file. readline[] to get the first line of the file and store this in a variable first_line . Create a second variable, last_line , and iterate through all lines in the file until the end.

Làm thế nào để bạn in dòng đầu ra cuối cùng trong Python?

=> readlines [] là một phương thức trả về tất cả các dòng trong tệp dưới dạng danh sách.Nếu chỉ mục là -1, nó sẽ nhận được dòng cuối cùng ...
FileName = Input ["Nhập tên tệp:"].
f = mở [tên tệp, "r"].
cnt = 0 ..
Đối với dòng trong f.ReadLines []:.
Nếu 'biến/cột' trong dòng:.
print[line].
cnt += 1 ..
Elif 0

Bài Viết Liên Quan

Chủ Đề