2
Làm sao để đọc từng dòng từ tập tin trong Python?
0
Thanh Trần0 đã đăng:

Ví dụ mình có tập tin abc.txt có nội dung như sau,

Python
C/C++
Java
Pascal

Cho mình hỏi làm sao để đọc từng dòng một trong tập tin trên sử dụng ngôn ngữ lập trình Python?

thêm bình luận...
3
xuans2huy510 đã đăng:

Có hai cách bạn có thể sử dụng để đọc từng dòng từ một tập tin trong Python, cụ thể mỗi cách sẽ tùy vào từng trường hợp mà bạn muốn xử lý dữ liệu sau khi đã đọc lên sao cho phù hợp với chương trình của bạn.

Cách thứ nhất - đọc từng dòng, xử lý luôn dòng sau khi đã đọc rồi mới chuyển qua đọc dòng tiếp theo.

with open('<đường dẫn tới file cần đọc>') as file:
    for line in file:
        <xử lý dòng ngay sau khi đã đọc>

Ví dụ: đọc từng dòng trong tập tin abc.txt của bạn và đánh số thứ tự tăng dần ở mỗi dòng, sau đó xuất kết quả ra màn hình,

with open('abc.txt') as file:
    i = 1
    for line in file:
        result = str(i) + ' - ' + line
        print result
        i += 1

Kết quả hiển thị trên màn hình,

1 - Python
2 - C/C++
3 - Java
4 - Pascal

Ưu điểm của cách thứ nhất: Trong trường hợp tập tin chứa hàng ngàn đến hàng triệu dòng, việc đọc từng dòng, xử lý ngay trên dòng đó rồi mới chuyển qua đọc dòng tiếp theo rất hiệu quả về vấn đề thời gian thực thi và tránh tình trạng tràn bộ nhớ.

Cách thứ hai - đọc từng dòng, lưu tất cả các dòng đã đọc được vào list, rồi mới xử lý.

with open('<đường dẫn tới file cần đọc>') as file:
    noi_dung_file = file.readlines()

Ví dụ: đọc tập tin abc.txt của bạn, lưu vào list rồi xuất ra phần tử thứ 2 trong list:

# -*- coding: utf-8 -*-
with open('abc.txt') as file:
    noi_dung_file = file.readlines()

print noi_dung_file[1] # Phần tử thứ hai trong danh sách

Kết quả hiển thị ra màn hình,

C/C++

Nhược điểm của cách thứ hai: Đối với tập tin có kích thước rất lớn hàng triệu dòng, sử dụng cách này có thể gây lỗi tràn bộ nhớ, do đó cách này chỉ phù hợp với tập tin có kích thước nhỏ.

đã bổ sung 6.0 năm trước bởi
xuans2huy510

Cảm ơn bạn @xuans2huy nhiều nhé, mình còn một chỗ thắc mắc, bạn xuất ra kết quả là:

C/C++

Còn kết quả của mình là:

C/C++\n

là tại sao vậy?

Thanh Trần 06.05.2018
1

Oh, sorry, mình quên nói lưu ý chỗ này, \n là new line có nghĩa là xuống dòng trong tập tin thôi bạn, tập tin ban đầu của bạn nếu đọc vào chương trình sẽ có dạng,

Python\n
C/C++\n
Java\n
Pascal\n

Khi đọc từng dòng thì Python đọc luôn kí tự \n. Bạn có thể dùng hàm strip() để loại bỏ ký tự new line ở cuối dòng nhé.

Ví dụ:

a = 'Python\n'
a = a.strip()
print a # Kết quả chỉ còn là Python
xuans2huy 06.05.2018

À, ra là vậy, mình hiểu rồi, thanks bạn @xuans2huy

Thanh Trần 06.05.2018
thêm bình luận...
0
gaconit0 đã đăng:

bạn dùng phương thức readline() để đọc từng dòng file trong Python là được mà. Tham khảo link dưới : Đọc file trong python | Lập trình căn bản - học lập trình theo phong cách Nhật Bản!

đã bổ sung 2.9 năm trước bởi
Avatar: gaconit gaconit0
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)