Đọc một dòng từ tệp Python

Có nhiều cách khác nhau để đọc tệp trong Python. Các phương pháp phổ biến nhất để đọc tệp theo từng dòng trong Python sẽ được đề cập

Sử dụng phương thức readlines[]

Sử dụng phương pháp này, một tệp sẽ được mở và nội dung của nó sẽ được chia thành các dòng riêng biệt. Phương thức này cũng trả về danh sách mọi dòng trong tệp. Để đọc toàn bộ tệp một cách hiệu quả, chúng ta có thể sử dụng hàm readlines[]

Sau đây là một ví dụ để loại bỏ các tệp hoán đổi bằng cách sử dụng tệp. phương thức kết thúc[] -

Thí dụ

Sau đây là một ví dụ để đọc từng dòng tệp văn bản bằng phương thức readlines[] -

đầu ra

Sau đây là một đầu ra của đoạn mã trên

['Welcome to Tutorials Point\n', 'This is a new file.\n', 'Reading a file line by line using Python\n', 'Thank You!']

Sử dụng phương thức readline[]

Dòng đầu tiên của tệp văn bản có thể được lấy bằng phương thức readline[]. Khi chúng ta sử dụng phương thức readline[] để đọc file, so với readlines[] thì chỉ có một dòng được in ra

Thí dụ

Sau đây là một ví dụ để đọc một dòng của tệp văn bản bằng phương thức readline[] -

đầu ra

Hàm readline[] chỉ trả về một dòng văn bản. Nếu bạn muốn đọc tất cả các dòng cùng một lúc, hãy sử dụng readline[]

Sau đây là đầu ra của đoạn mã trên -

Welcome to Tutorials Point

Lưu ý − Phương thức readline[], trái ngược với phương thức tương đương, chỉ trích xuất một dòng từ một tệp. Một ký tự dòng mới ở cuối cũng sẽ được thêm vào cuối chuỗi bằng phương thức realine[]

Chúng tôi cũng có thể xác định độ dài cho dòng được trả về bằng phương thức readline[]. Không có kích thước, toàn bộ dòng sẽ được đọc

Sử dụng vòng lặp While

Bạn có thể sử dụng vòng lặp while để đọc từng dòng nội dung của tệp được chỉ định. Trước tiên hãy mở tệp ở chế độ đọc bằng hàm open[] để thực hiện điều đó. Sử dụng trình xử lý tệp open[] được trả về bên trong vòng lặp while để đọc các dòng

Vòng lặp while sử dụng phương thức readline[] của Python để đọc các dòng. Khi vòng lặp for được sử dụng, vòng lặp sẽ kết thúc khi đến cuối tệp. Tuy nhiên, với vòng lặp while, đây không phải là trường hợp và bạn phải liên tục kiểm tra xem tệp đã đọc xong chưa. Do đó, bạn có thể sử dụng câu lệnh break để kết thúc vòng lặp while - bất cứ khi nào phương thức readline[] trả về một chuỗi rỗng

Thí dụ

Sau đây là một ví dụ để đọc từng dòng một tệp văn bản bằng cách sử dụng vòng lặp while -

file = open["TutorialsPoint.txt", "r"] while file: line = file.readline[] print[line] if line == "": break file.close[]

đầu ra

Sau đây là đầu ra của đoạn mã trên -

Welcome to Tutorials Point
This is a new file.
Reading a file line by line using Python
Thank You!

Sử dụng vòng lặp

Bắt đầu bằng cách mở tệp ở chế độ chỉ đọc bằng hàm Python open[]. Một trình xử lý tệp sẽ được trả về bởi hàm open[]. Trong vòng lặp for của bạn, hãy sử dụng trình xử lý tệp để đọc từng dòng từ tệp được cung cấp cùng một lúc. Khi hoàn tất, sử dụng hàm close[] để đóng trình xử lý tệp

Thí dụ

Sau đây là một ví dụ để đọc từng dòng một tệp văn bản bằng cách sử dụng vòng lặp for -

file = open["TutorialsPoint.txt", "r"] for line in file: print[line] file.close[]

đầu ra

Sau đây là đầu ra của đoạn mã trên -

Welcome to Tutorials Point
This is a new file.
Reading a file line by line using Python
Thank You!

Sử dụng Trình quản lý ngữ cảnh

Bất kỳ ngôn ngữ lập trình nào cũng yêu cầu một cách tiếp cận tinh tế để quản lý tệp. Phải cẩn thận khi xử lý tệp để tránh tham nhũng. Điều quan trọng cần nhớ là đóng tài nguyên sau khi mở tệp. Ngoài ra, Python có giới hạn về số lượng tệp có thể được mở cùng một lúc. Python cung cấp cho chúng tôi Trình quản lý ngữ cảnh để giúp chúng tôi tránh những sự cố này

Việc xử lý tệp sẽ an toàn nếu Python sử dụng câu lệnh with

  • Để truy cập các tệp tài nguyên một cách an toàn, hãy sử dụng câu lệnh with
  • Khi Python bắt gặp khối with, nó sẽ tạo một ngữ cảnh mới
  • Python tự động đóng tài nguyên tệp sau khi khối chạy xong
  • Phạm vi của ngữ cảnh tương tự như câu lệnh with

Thí dụ

Sau đây là một ví dụ để đọc từng dòng một tệp văn bản bằng cách sử dụng với câu lệnh -

đầu ra

Lần này, các dòng của tệp được đọc bằng vòng lặp for. Khi chúng tôi sử dụng Trình quản lý ngữ cảnh, tệp sẽ tự đóng bất cứ khi nào trình xử lý của nó thoát khỏi phạm vi. Câu lệnh with đảm bảo rằng tài nguyên được xử lý đúng cách khi hàm đã hoàn thành công việc với tệp

Hướng dẫn này sẽ chỉ cho bạn cách đọc một dòng cụ thể từ tệp văn bản trong Python bằng hai cách khác nhau

Trong ví dụ đầu tiên, chúng ta sẽ xem cách thực hiện tác vụ này bằng cách sử dụng hàm readlines[] của Python. Trong ví dụ thứ hai của chúng tôi, chúng tôi sẽ sử dụng mô-đun linecache Python để đọc một dòng cụ thể

Trong các hướng dẫn Python trước đây của tôi, tôi đã chỉ cho bạn một số điều bạn có thể làm với một tệp văn bản như

  • Cách tạo tệp văn bản trong Python
  • Cách đếm số dòng trong tệp văn bản bằng Python

Đọc một dòng cụ thể từ một tệp văn bản trong Python

Sử dụng phương pháp readlines[]

Sử dụng readlines[] là cách dễ nhất để đọc một dòng cụ thể từ tệp văn bản trong Python. Dưới đây được đưa ra đoạn mã

file_variable = open['filename.txt']
all_lines_variable = file_variable.readlines[]
print[all_lines_variable[specific_line_number - 1]]
  • Trong đó
    I am line no 1
    I am line no 2
    I am line no 3
    I am line no 4
    I am line no 5
    I am line no 6
    I am line no 7
    I am line no 8
    I am line no 9
    I am line no 10
    0 là tên biến
  • I am line no 1
    I am line no 2
    I am line no 3
    I am line no 4
    I am line no 5
    I am line no 6
    I am line no 7
    I am line no 8
    I am line no 9
    I am line no 10
    1 – Đây là biến để giữ các dòng như một Đối tượng
  • I am line no 1
    I am line no 2
    I am line no 3
    I am line no 4
    I am line no 5
    I am line no 6
    I am line no 7
    I am line no 8
    I am line no 9
    I am line no 10
    2 – Nếu bạn muốn đọc dòng số 15 thì đặt số 14 vào trong ngoặc vuông

Giả sử rằng chúng ta có một tệp văn bản có tên tệp  this_is_file. txt

Đây là nội dung của tệp văn bản

I am line no 1
I am line no 2
I am line no 3
I am line no 4
I am line no 5
I am line no 6
I am line no 7
I am line no 8
I am line no 9
I am line no 10

Bây giờ chúng ta phải đọc các văn bản từ dòng số 5

Sau đó, chúng tôi sẽ sử dụng mã dưới đây

file = open['this_is_file.txt']
all_lines = file.readlines[]
print[all_lines[4]]

đầu ra

I am line no 5

Sử dụng mô-đun Python của linecache

Tôi yêu Python chỉ vì các mô-đun tích hợp tuyệt vời của nó

Rất may, Python có mô-đun linecache cho phép chúng tôi lấy bất kỳ dòng cụ thể nào từ bất kỳ tệp nào

Hãy xem một ví dụ…

Giả sử bạn được yêu cầu đọc dòng số 7 từ tệp văn bản

Đây là mã

import linecache
print[linecache.getline['this_is_file.txt',7]]

đầu ra

I am line no 7

Để biết thêm về mô-đun linecache, hãy xem tài liệu về linecache

17 phản hồi cho “Cách đọc một dòng cụ thể từ tệp văn bản trong Python”

  1. Nicolai Thomsen nói.

    Cảm ơn nhiều

    • Saruque Ahamed Mollick nói.

      Chúng tôi rất vui vì nó đã giúp bạn

  2. Adrian nói.

    Xin chào. Bạn có thể cho tôi biết cách đọc tệp văn bản bắt đầu từ một dòng cụ thể không?

    Giống như, nếu nó có dòng 1 đến dòng 5, tôi muốn bắt đầu đọc từ dòng 2 trở đi cho đến dòng 5 và bỏ qua dòng 1

    • Saruque Ahamed Mollick nói.

      Bạn có thể sử dụng “print[all_lines[i]]” này trong vòng lặp for khi giá trị của i sẽ tăng từ 2 lên 5

  3. Mehregan Karbasi nói.

    Tôi đã học sth nhưng tôi rất tiếc phải nói rằng nó không giúp được gì cho các tệp lớn như nhúng từ fastText từ facebook. Phương pháp đầu tiên [read_lines] là một công cụ giảm giá hoàn toàn vì nó sẽ cần chứa tất cả 2 triệu dòng trong bộ nhớ và hãy tin tôi khi tôi nói rằng Không có máy tính cá nhân nào từ năm 2011 [như máy tính xách tay của tôi] có thể xử lý
    Tôi đã thử sử dụng linecache và thật không may, nó dường như không hoạt động đối với. tập tin vec. Ý tôi là nó không in dòng nhưng vẫn mất 79. 41100716590881 giây để xử lý mã python của tôi. Nó nên làm bất cứ điều gì. mã python của tôi đã cố in dòng thứ 250000
    —————
    để tham khảo, tôi đã làm điều này với một vòng lặp for và mất 8 giây để xử lý điều tương tự và nó cũng có thể in dòng
    còn nữa. nó đã in được dòng thứ 1900000 trong 79 giây. vì vậy chúng tôi biết rằng phương pháp này không hoạt động với số lượng lớn. vec và nếu có, nó chậm hơn nhiều so với vòng lặp for đơn giản
    Bất kỳ ý tưởng về điều đó?

    • Saruque Ahamed Mollick nói.

      Tôi không chắc làm thế nào để làm điều đó mà không lưu trữ các dòng trong bộ nhớ. Nếu bạn tìm thấy một giải pháp vui lòng đặt nó ở đây để nó giúp những người học khác

  4. Nintendo nói.

    Tôi muốn tìm kiếm một dòng cụ thể với tên chuỗi và thay đổi nó. Làm thế nào tôi có thể làm điều đó?
    Giống như trong tệp văn bản nếu có dòng Apple=Fruit…tôi muốn tìm dòng này ở bất cứ đâu trong tệp và đổi thành Apple = Tasty Fruit. Làm thế nào tôi có thể làm điều đó??
    Làm ơn giúp tôi

    • Saruque Ahamed Mollick nói.

      Chỉ cần tìm chuỗi con trong dòng đó. với phương thức find[] sau đó nếu tìm thấy chuỗi con thì hãy thay thế chuỗi đó bằng re. hàm phụ[]

  5. Robert nói.

    Tôi có thể đặt một biến thành một dòng cụ thể trong một tệp khác không?

    • Saruque Ahamed Mollick nói.

      Vâng, bạn chắc chắn có thể làm điều đó. Chỉ cần gán bất kỳ biến nào cho nội dung dòng cụ thể đó dưới dạng một chuỗi

  6. Naman Singh Shekhawat nói.

    Tôi muốn biết làm thế nào tôi có thể tìm thấy dòng không. từ một tập tin cụ thể. Giống như nếu tệp của tôi dưới dạng danh sách tên, tôi muốn biết tên cụ thể xuất hiện ở dòng nào. [P. S. Mã này cũng thực sự hữu ích. ]

  7. C,Sudhakar nói.

    Điều này rất hữu ích cho người mới bắt đầu như tôi. Cảm ơn bạn rất nhiều, Hãy tiếp tục viết nhiều hơn để giúp đỡ những người như tôi

  8. Maricco nói.

    Xin chào – cách đếm hai hoặc ba giá trị đã cho, tất cả được tìm thấy trong cùng một dòng với một dòng. Ví dụ, năm phụ nữ thể thao độc thân. Giá trị là năm, độc thân, phụ nữ nhưng sẽ chỉ được tính là một 1 dòng. Cảm ơn trước

  9. Sarah nói.

    Mã này luôn trả về một dòng trống bên dưới dòng tôi đã chọn, làm cách nào để loại bỏ mã này?

    • Troy nói.

      Sử dụng phương thức strip[] trên chuỗi. Thao tác này sẽ xóa khoảng trắng ở đầu và cuối bao gồm cả Dòng mới gây ra dòng trống bên dưới

      Phương pháp nào đọc một dòng từ một tệp?

      Phương thức readline đọc một dòng từ tệp và trả về dưới dạng chuỗi.

      Hàm nào được sử dụng để đọc một dòng từ tệp trong Python?

      Phương pháp 1. Đọc từng dòng tệp bằng cách sử dụng readlines[] . Chúng ta có thể lặp qua danh sách và loại bỏ ký tự '\n' dòng mới bằng cách sử dụng hàm strip[]. Thí dụ. Python3.

Chủ Đề