Làm thế nào bạn chỉ nhận được dòng đầu tiên của tệp dưới dạng chuỗi với Python?
Làm thế nào bạn chỉ nhận được dòng đầu tiên của tệp dưới dạng chuỗi với Python?
Câu trả lời:
Sử dụng .readline()
phương thức ( tài liệu Python 2 , tài liệu Python 3 ):
with open('myfile.txt') as f:
first_line = f.readline()
Một số lưu ý:
f.readline()
sẽ chứa một dòng mới. Bạn có thể muốn sử dụng f.readline().strip()
thay thế để loại bỏ dòng mới.with
lệnh sẽ tự động đóng tệp lại khi khối kết thúc.with
lệnh chỉ hoạt động trong Python 2.5 trở lên và trong Python 2.5 bạn cần sử dụngfrom __future__ import with_statement
mod_wsgi
).
infile = open('filename.txt', 'r')
firstLine = infile.readline()
with
là tốt hơn.
fline=open("myfile").readline().rstrip()
rstrip()
loại bỏ các ký tự dòng mới.
Điều này nên làm điều đó:
f = open('myfile.txt')
first = f.readline()
Để quay lại phần đầu của tệp đang mở và sau đó trả về dòng đầu tiên, hãy làm điều này:
my_file.seek(0)
first_line = my_file.readline()
Rất nhiều câu trả lời khác ở đây, nhưng để trả lời chính xác câu hỏi bạn đã hỏi (trước khi @MarkAmery đi và chỉnh sửa câu hỏi ban đầu và thay đổi ý nghĩa):
>>> f = open('myfile.txt')
>>> data = f.read()
>>> # I'm assuming you had the above before asking the question
>>> first_line = data.split('\n', 1)[0]
Nói cách khác, nếu bạn đã đọc trong tệp (như bạn đã nói) và có một khối dữ liệu lớn trong bộ nhớ, thì để có được dòng đầu tiên từ nó một cách hiệu quả, hãy thực hiện phân tách () trên ký tự dòng mới, một lần chỉ và lấy phần tử đầu tiên từ danh sách kết quả.
Lưu ý rằng điều này không bao gồm \n
ký tự ở cuối dòng, nhưng tôi cho rằng dù sao bạn cũng không muốn nó (và một tệp một dòng thậm chí có thể không có). Cũng lưu ý rằng mặc dù nó khá ngắn và nhanh, nhưng nó tạo ra một bản sao của dữ liệu, vì vậy đối với một bộ nhớ thực sự lớn, bạn có thể không coi đó là "hiệu quả". Như mọi khi, nó phụ thuộc ...
.read()
phải được gọi trước.
f1 = open("input1.txt", "r")
print(f1.readline())