Làm thế nào tôi có thể
f1 = open[inputFile, "r"]
last_line = f1.readlines[][-1]
f1.close[]
1 dòng cuối cùng của một tệp văn bản được đọc bằng Python?fi=open[inputFile,"r"]
for line in fi:
#go to last line and print it
Khi được hỏi ngày 14 tháng 5 năm 2016 lúc 14:33May 14, 2016 at 14:33
Một tùy chọn là sử dụng
f1 = open[inputFile, "r"]
last_line = f1.readlines[][-1]
f1.close[]
2:f1 = open[inputFile, "r"]
last_line = f1.readlines[][-1]
f1.close[]
Tuy nhiên, nếu bạn không cần tệp sau, nên sử dụng bối cảnh bằng cách sử dụng
f1 = open[inputFile, "r"]
last_line = f1.readlines[][-1]
f1.close[]
3, để tệp được tự động đóng sau:with open[inputFile, "r"] as f1:
last_line = f1.readlines[][-1]
Đã trả lời ngày 14 tháng 5 năm 2016 lúc 14:37May 14, 2016 at 14:37
Rushy Panchalrushy PanchalRushy Panchal
16.3K16 Huy hiệu vàng58 Huy hiệu bạc92 Huy hiệu Đồng16 gold badges58 silver badges92 bronze badges
1
Bạn có cần phải hiệu quả bằng cách không đọc tất cả các dòng vào bộ nhớ cùng một lúc? Thay vào đó bạn có thể lặp lại đối tượng tệp.
with open[inputfile, "r"] as f:
for line in f: pass
print line #this is the last line of the file
Đã trả lời ngày 14 tháng 5 năm 2016 lúc 14:39May 14, 2016 at 14:39
Gnicholasgnicholasgnicholas
1.9731 Huy hiệu vàng20 Huy hiệu bạc32 Huy hiệu Đồng1 gold badge20 silver badges32 bronze badges
1
Ba cách để đọc dòng cuối cùng của một tệp:
- Đối với một tệp nhỏ, hãy đọc toàn bộ tệp vào bộ nhớ
with open["file.txt"] as file:
lines = file.readlines[]
print[lines[-1]]
- Đối với một tệp lớn, hãy đọc từng dòng và in dòng cuối cùng
with open["file.txt"] as file:
for line in file:
pass
print[line]
- Để tiếp cận hiệu quả, hãy trực tiếp đến dòng cuối cùng
import os
with open["file.txt", "rb"] as file:
# Go to the end of the file before the last break-line
file.seek[-2, os.SEEK_END]
# Keep reading backward until you find the next break-line
while file.read[1] != b'\n':
file.seek[-2, os.SEEK_CUR]
print[file.readline[].decode[]]
Đã trả lời ngày 16 tháng 7 năm 2021 lúc 18:30Jul 16, 2021 at 18:30
Kafrankafrankafran
5144 Huy hiệu bạc10 Huy hiệu đồng4 silver badges10 bronze badges
Nếu bạn có đủ khả năng để đọc toàn bộ tệp trong bộ nhớ [nếu fileize nhỏ hơn đáng kể so với tổng bộ nhớ], bạn có thể sử dụng phương thức readlines [] như đã đề cập trong một trong các câu trả lời khác, nhưng nếu tệp lớn, thì tốt nhất Cách để làm điều đó là:
fi=open[inputFile, 'r']
lastline = ""
for line in fi:
lastline = line
print lastline
Đã trả lời ngày 14 tháng 5 năm 2016 lúc 14:43May 14, 2016 at 14:43
ajays20078ajays20078ajays20078
3481 Huy hiệu vàng2 Huy hiệu bạc10 Huy hiệu đồng1 gold badge2 silver badges10 bronze badges
1
Bạn có thể sử dụng
f1 = open[inputFile, "r"]
last_line = f1.readlines[][-1]
f1.close[]
4 để đọc tệp của mình dưới dạng danh sách và in dòng cuối cùng.Nhược điểm: Phương pháp này phân bổ một biến mới [không phải là một trình lưu giữ bộ nhớ lý tưởng cho các tệp rất lớn].: This method allocates a new variable [not an ideal memory-saver for very large files].
Ưu điểm: Tra cứu danh sách mất thời gian O [1] và bạn có thể dễ dàng điều khiển danh sách nếu bạn muốn sửa đổi InputFile của mình, cũng như đọc dòng cuối cùng.: List lookups take O[1] time, and you can easily manipulate a list if you happen to want to modify your inputFile, as well as read the final line.
import csv
lis = list[csv.reader[open[inputFile]]]
print lis[-1] # prints final line as a list of strings
Đã trả lời ngày 15 tháng 5 năm 2016 lúc 8:40May 15, 2016 at 8:40
DanieldanielDaniel
2.2214 Huy hiệu vàng18 Huy hiệu bạc35 Huy hiệu Đồng4 gold badges18 silver badges35 bronze badges
Nếu bạn quan tâm đến bộ nhớ, điều này sẽ giúp bạn.
last_line = ''
with open[inputfile, "r"] as f:
f.seek[-2, os.SEEK_END] # -2 because last character is likely \n
cur_char = f.read[1]
while cur_char != '\n':
last_line = cur_char + last_line
f.seek[-2, os.SEEK_CUR]
cur_char = f.read[1]
print last_line
Đã trả lời ngày 18 tháng 1 năm 2019 lúc 15:56Jan 18, 2019 at 15:56
Điều này có thể giúp bạn.
f1 = open[inputFile, "r"]
last_line = f1.readlines[][-1]
f1.close[]
0Đã trả lời ngày 26 tháng 7 năm 2018 lúc 11:16Jul 26, 2018 at 11:16