Đoạn mã trên mở 'my_file. txt' ở chế độ đọc, sau đó lưu trữ dữ liệu mà nó đọc được từ my_file. txt trong my_file_data và đóng tệp. Chức năng đọc đọc toàn bộ tệp cùng một lúc. Bạn có thể sử dụng cách sau để đọc từng dòng tệp và lưu trữ nó trong danh sách
f = open['my_file', 'r+'] lines = [line for line inf.readlines[]] f.close[]
Một cách khác để đạt được điều tương tự là sử dụng vòng lặp for. Trong mỗi lần lặp, bạn có thể đọc từng dòng của đối tượng
with open["data_file.txt"] as f:
content_list = f.readlines[]
# print the list
print[content_list]
# remove new line characters
content_list = [x.strip[] for x in content_list]
print[content_list]
0 và lưu trữ nó trong with open["data_file.txt"] as f:
content_list = f.readlines[]
# print the list
print[content_list]
# remove new line characters
content_list = [x.strip[] for x in content_list]
print[content_list]
1 như trong ví dụ trênPhương pháp 1 [SQA]- Phương pháp này sử dụng "mảng" có kích thước và kiểu dữ liệu đã đặt
- Tệp được mở và đóng một cách rõ ràng
- Chương trình sẽ bị treo nếu không có đủ dòng dữ liệu trong tệp
# define filename as a constant DATA_FILE= 'students.csv' NUMBER_OF_STUDENTS = 20 def readDataFromFile[]: # create empty arrays names = [""] * NUMBER_OF_STUDENTS marks = [0] * NUMBER_OF_STUDENTS # open file for reading f=open[DATA_FILE, 'r'] for line in range[NUMBER_OF_STUDENTS]: # decode each line from file data = f.readline[] data = data.strip['n'] data = data.split[','] # insert data into arrays names[line] = data[0] marks[line] = int[data[1]] f.close[] return names, marks #MAIN PROGRAM names, marks= readDataFromFile[] print[name, mark]Phương pháp 2 [Pythonic]
- Phương pháp này nối thêm dữ liệu vào danh sách
- Tệp tự động đóng khi vòng lặp with hoàn thành
# define filename as a constant DATA_FILE= 'students.csv' def readDataFromFile[]: # create empty lists names = [] marks = [] # open file for reading with open[DATA_FILE, 'r'] as f: for line in f.readlines[]: # decode each line from file data = line.strip['n'] data = data.split[','] # add data to lists names.append[data[0]] marks.append[int[data[1]]] return names, marks #MAIN PROGRAM names, marks= readDataFromFile[] print[name, mark]
Python cung cấp các hàm sẵn có để tạo, viết và đọc tệp. Có hai loại tệp có thể được xử lý trong python, tệp văn bản bình thường và tệp nhị phân [được viết bằng ngôn ngữ nhị phân, 0 và 1]. Trong bài này, chúng ta sẽ nghiên cứu cách đọc từng dòng từ một tập tin
Phương pháp 1. Đọc từng dòng tệp bằng cách sử dụng readlines[]
readlines[] được sử dụng để đọc tất cả các dòng trong một lần và sau đó trả về chúng dưới dạng mỗi dòng một phần tử chuỗi trong danh sách. Chức năng này có thể được sử dụng cho các tệp nhỏ, vì nó đọc toàn bộ nội dung tệp vào bộ nhớ, sau đó chia thành các dòng riêng biệt. Chúng ta có thể lặp lại danh sách và loại bỏ ký tự '\n' của dòng mới bằng cách sử dụng hàm strip[]
Thí dụ.
Python3
# Python code to
# demonstrate readlines[]
L
=
Line1 Geeks Line2 for Line3 Geeks0
Line1 Geeks Line2 for Line3 Geeks1
Line1 Geeks Line2 for Line3 Geeks2
Line1 Geeks Line2 for Line3 Geeks3
Line1 Geeks Line2 for Line3 Geeks2
Line1 Geeks Line2 for Line3 Geeks1
Line1 Geeks Line2 for Line3 Geeks6
Line1 Geeks Line2 for Line3 Geeks8
Line1 Geeks Line2 for Line3 Geeks9
=
Using for loop Line1: Geeks Line2: for Line3: Geeks1
Using for loop Line1: Geeks Line2: for Line3: Geeks2
Using for loop Line1: Geeks Line2: for Line3: Geeks3
Line1 Geeks Line2 for Line3 Geeks2
Using for loop Line1: Geeks Line2: for Line3: Geeks5
Using for loop Line1: Geeks Line2: for Line3: Geeks6
Using for loop Line1: Geeks Line2: for Line3: Geeks7
Using for loop Line1: Geeks Line2: for Line3: Geeks8
['Geeks\n', 'For\n', 'Geeks'] ['Geeks', 'For', 'Geeks']0
Line1 Geeks Line2 for Line3 Geeks9
=
Using for loop Line1: Geeks Line2: for Line3: Geeks1
Using for loop Line1: Geeks Line2: for Line3: Geeks2
Using for loop Line1: Geeks Line2: for Line3: Geeks3
Line1 Geeks Line2 for Line3 Geeks2
['Geeks\n', 'For\n', 'Geeks'] ['Geeks', 'For', 'Geeks']7
Using for loop Line1: Geeks Line2: for Line3: Geeks6
['Geeks\n', 'For\n', 'Geeks'] ['Geeks', 'For', 'Geeks']9_______154_______
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks1
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks3
=
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks5
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks6
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks7
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks8
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks9
# Python code to
0# Python code to
1_______31_______3# Python code to
3=
# Python code to
5
# Python code to
1_______150_______7
Using for loop Line1: Geeks Line2: for Line3: Geeks2
# Python code to
9# demonstrate readlines[]
0# demonstrate readlines[]
1# demonstrate readlines[]
2đầu ra.
Line1: Geeks Line2: for Line3: Geeks
Phương pháp 2. Đọc từng dòng tệp bằng cách sử dụng readline[]
hàm readline[] đọc một dòng của tệp và trả về dưới dạng chuỗi. Nó nhận một tham số n, xác định số byte tối đa sẽ được đọc. Tuy nhiên, không đọc nhiều hơn một dòng, ngay cả khi n vượt quá độ dài của dòng. Nó sẽ hiệu quả khi đọc một tệp lớn vì thay vì tìm nạp tất cả dữ liệu trong một lần, nó sẽ tìm nạp từng dòng. readline[] trả về dòng tiếp theo của tệp chứa ký tự xuống dòng ở cuối. Ngoài ra, nếu đến cuối tệp, nó sẽ trả về một chuỗi rỗng
Thí dụ
Python3
# demonstrate readlines[]
3
# demonstrate readlines[]
4
L
=
Line1 Geeks Line2 for Line3 Geeks0
Line1 Geeks Line2 for Line3 Geeks1
Line1 Geeks Line2 for Line3 Geeks2
Line1 Geeks Line2 for Line3 Geeks3
Line1 Geeks Line2 for Line3 Geeks2
Line1 Geeks Line2 for Line3 Geeks1
Line1 Geeks Line2 for Line3 Geeks6
6
Line1 Geeks Line2 for Line3 Geeks9
=
Using for loop Line1: Geeks Line2: for Line3: Geeks1
Using for loop Line1: Geeks Line2: for Line3: Geeks2
Using for loop Line1: Geeks Line2: for Line3: Geeks3
Line1 Geeks Line2 for Line3 Geeks2
Using for loop Line1: Geeks Line2: for Line3: Geeks5
Using for loop Line1: Geeks Line2: for Line3: Geeks6
L
5
Using for loop Line1: Geeks Line2: for Line3: Geeks8
L
8
Line1 Geeks Line2 for Line3 Geeks9
=
Using for loop Line1: Geeks Line2: for Line3: Geeks1
Using for loop Line1: Geeks Line2: for Line3: Geeks2
Using for loop Line1: Geeks Line2: for Line3: Geeks3
Line1 Geeks Line2 for Line3 Geeks2
['Geeks\n', 'For\n', 'Geeks'] ['Geeks', 'For', 'Geeks']7
Using for loop Line1: Geeks Line2: for Line3: Geeks6
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks3
=
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks5
Line1 Geeks Line2 for Line3 Geeks01
Line1 Geeks Line2 for Line3 Geeks02
Line1 Geeks Line2 for Line3 Geeks03
# Python code to
1_______31_______3# Python code to
3=
# Python code to
5
# Python code to
1____5_______11
# Python code to
1_______31_______8=
Line1 Geeks Line2 for Line3 Geeks15
# Python code to
1____5_______18
# Python code to
1____5_______20
# Python code to
1_______5_______22
Line1 Geeks Line2 for Line3 Geeks23
Line1 Geeks Line2 for Line3 Geeks24
Line1 Geeks Line2 for Line3 Geeks25
Line1 Geeks Line2 for Line3 Geeks26
# Python code to
1_______150_______7
Using for loop Line1: Geeks Line2: for Line3: Geeks2
# Python code to
9# demonstrate readlines[]
0# demonstrate readlines[]
1# demonstrate readlines[]
2
Using for loop Line1: Geeks Line2: for Line3: Geeks8
đầu ra.
Line1 Geeks Line2 for Line3 Geeks
Phương pháp 3. Đọc từng dòng tệp bằng cách sử dụng vòng lặp for
Một đối tượng có thể lặp lại được trả về bởi hàm open[] trong khi mở tệp. Cách cuối cùng này để đọc tệp theo từng dòng bao gồm việc lặp qua một đối tượng tệp trong một vòng lặp. Khi làm điều này, chúng ta đang tận dụng lợi thế của hàm Python tích hợp cho phép chúng ta lặp lại hoàn toàn đối tượng tệp bằng cách sử dụng vòng lặp for kết hợp với việc sử dụng đối tượng có thể lặp lại. Cách tiếp cận này cần ít dòng mã hơn, đây luôn là cách thực hành tốt nhất đáng làm theo
Thí dụ
Python3
# demonstrate readlines[]
3
Line1 Geeks Line2 for Line3 Geeks37
Line1 Geeks Line2 for Line3 Geeks38
L
=
Line1 Geeks Line2 for Line3 Geeks0
Line1 Geeks Line2 for Line3 Geeks1
Line1 Geeks Line2 for Line3 Geeks2
Line1 Geeks Line2 for Line3 Geeks3
Line1 Geeks Line2 for Line3 Geeks2
Line1 Geeks Line2 for Line3 Geeks1
Line1 Geeks Line2 for Line3 Geeks6
Line1 Geeks Line2 for Line3 Geeks50
Line1 Geeks Line2 for Line3 Geeks9
=
Using for loop Line1: Geeks Line2: for Line3: Geeks1
Using for loop Line1: Geeks Line2: for Line3: Geeks2
Using for loop Line1: Geeks Line2: for Line3: Geeks3
Line1 Geeks Line2 for Line3 Geeks2
Using for loop Line1: Geeks Line2: for Line3: Geeks5
Using for loop Line1: Geeks Line2: for Line3: Geeks6
Using for loop Line1: Geeks Line2: for Line3: Geeks7
Using for loop Line1: Geeks Line2: for Line3: Geeks8
Line1 Geeks Line2 for Line3 Geeks62
Line1 Geeks Line2 for Line3 Geeks9
=
Using for loop Line1: Geeks Line2: for Line3: Geeks1
Using for loop Line1: Geeks Line2: for Line3: Geeks2
Using for loop Line1: Geeks Line2: for Line3: Geeks3
Line1 Geeks Line2 for Line3 Geeks2
['Geeks\n', 'For\n', 'Geeks'] ['Geeks', 'For', 'Geeks']7
Using for loop Line1: Geeks Line2: for Line3: Geeks6
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks3
=
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks5
Line1 Geeks Line2 for Line3 Geeks75
# Python code to
7
Using for loop Line1: Geeks Line2: for Line3: Geeks2
Line1 Geeks Line2 for Line3 Geeks78
Using for loop Line1: Geeks Line2: for Line3: Geeks6
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks7
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks8
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks9
Line1 Geeks Line2 for Line3 Geeks83
# Python code to
1_______31_______3# Python code to
3=
# Python code to
5
# Python code to
1_______150_______7
Using for loop Line1: Geeks Line2: for Line3: Geeks2
# Python code to
9# demonstrate readlines[]
0# demonstrate readlines[]
1# demonstrate readlines[]
2
Line1 Geeks Line2 for Line3 Geeks97
Using for loop Line1: Geeks Line2: for Line3: Geeks8
đầu ra
Using for loop Line1: Geeks Line2: for Line3: Geeks
Phương pháp 4. Đọc từng dòng tệp bằng cách sử dụng vòng lặp for và hiểu danh sách
Việc hiểu danh sách bao gồm các dấu ngoặc chứa biểu thức, được thực thi cho từng phần tử cùng với vòng lặp for để lặp qua từng phần tử. Ở đây, chúng tôi sẽ đọc tệp văn bản và in dữ liệu thô bao gồm ký tự dòng mới trong một đầu ra khác, chúng tôi đã xóa tất cả các ký tự dòng mới khỏi danh sách
Thí dụ
Python3
Line1 Geeks Line2 for Line3 Geeks99
Using for loop Line1: Geeks Line2: for Line3: Geeks1
Using for loop Line1: Geeks Line2: for Line3: Geeks2
Using for loop Line1: Geeks Line2: for Line3: Geeks3
Using for loop Line1: Geeks Line2: for Line3: Geeks03
# Python code to
1_______14_______05=
Using for loop Line1: Geeks Line2: for Line3: Geeks07
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks7
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks8
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks9
Using for loop Line1: Geeks Line2: for Line3: Geeks11
# Python code to
7
Using for loop Line1: Geeks Line2: for Line3: Geeks14
Using for loop Line1: Geeks Line2: for Line3: Geeks16
Line1 Geeks Line2 for Line3 Geeks99
Using for loop Line1: Geeks Line2: for Line3: Geeks1
Using for loop Line1: Geeks Line2: for Line3: Geeks2
Using for loop Line1: Geeks Line2: for Line3: Geeks3
Using for loop Line1: Geeks Line2: for Line3: Geeks03
# Python code to
1_______14_______05=
Using for loop Line1: Geeks Line2: for Line3: Geeks25
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks7
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks8
Using readlines[] Line1: Geeks Line2: for Line3: Geeks Using readline[] Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks9
Using for loop Line1: Geeks Line2: for Line3: Geeks11
# Python code to
7
Using for loop Line1: Geeks Line2: for Line3: Geeks14
đầu ra
['Geeks\n', 'For\n', 'Geeks'] ['Geeks', 'For', 'Geeks']
Với tuyên bố
Trong các cách tiếp cận trên, mỗi khi tệp được mở, tệp cần được đóng một cách rõ ràng. Nếu một người quên đóng tệp, nó có thể gây ra một số lỗi trong mã, tôi. e. nhiều thay đổi trong tệp không có hiệu lực cho đến khi tệp được đóng đúng cách. Để ngăn chặn điều này với tuyên bố có thể được sử dụng. Câu lệnh With trong Python được sử dụng trong xử lý ngoại lệ để làm cho mã sạch hơn và dễ đọc hơn nhiều. Nó đơn giản hóa việc quản lý các tài nguyên phổ biến như luồng tệp. Quan sát ví dụ mã sau đây về cách sử dụng câu lệnh with làm cho mã sạch hơn. Không cần phải gọi tập tin. close[] khi sử dụng với câu lệnh. Bản thân câu lệnh with đảm bảo việc thu thập và giải phóng tài nguyên phù hợp