Python đọc dòng tiếp theo

Khi bạn gọi phương thức read trên một đối tượng tệp, Python sẽ đọc toàn bộ tệp vào bộ nhớ cùng một lúc. Nhưng đó có thể là một ý tưởng tồi nếu bạn đang làm việc với một tệp thực sự lớn

Có một cách phổ biến khác để xử lý tệp trong Python. bạn có thể lặp qua một đối tượng tệp để đọc từng dòng một

>>> filename = "diary980.md"
>>> with open[filename] as diary_file:
..     n = 1
..     for line in diary_file:
..         print[n, line]
..         n += 1
...

Ở đây, chúng tôi đang in ra một số [đếm lên] trong mỗi dòng trong tệp của chúng tôi

1 Python Log -- Day 980

2

3 Today I learned about metaclasses.

4 Metaclasses are a class's class.

5 Meaning every class is an instance of a metaclass.

6 The default metaclass is "type".

7

8 Classes control features [like string representations] of all their instances.

9 Metaclasses can control similar features for their classes.

10

11 I doubt I'll ever need to make a metaclass, at least not for production code.

Lưu ý rằng khi chúng tôi in, Python không chỉ in ra dòng mà còn thêm một dòng trống ở giữa mỗi dòng trong tệp của chúng tôi. Theo mặc định, hàm

>>> filename = "diary980.md"
>>> with open[filename] as diary_file:
..     n = 1
..     for line in diary_file:
..         print[n, line]
..         n += 1
...
0 của Python in một ký tự xuống dòng [
>>> filename = "diary980.md"
>>> with open[filename] as diary_file:
..     n = 1
..     for line in diary_file:
..         print[n, line]
..         n += 1
...
1] sau bất kỳ ký tự nào khác mà nó in ra [xem đối số
>>> filename = "diary980.md"
>>> with open[filename] as diary_file:
..     n = 1
..     for line in diary_file:
..         print[n, line]
..         n += 1
...
3 của hàm
>>> filename = "diary980.md"
>>> with open[filename] as diary_file:
..     n = 1
..     for line in diary_file:
..         print[n, line]
..         n += 1
...
0]. Nhưng mỗi dòng của chúng tôi cũng kết thúc bằng một ký tự dòng mới, bởi vì các ký tự dòng mới là những dòng riêng biệt trong một tệp

>>> line
"I doubt I'll ever need to make a metaclass, at least not for production code.\n"

Loại bỏ ký tự xuống dòng khi đọc từng dòng

Vì vậy, chúng ta cần loại bỏ ký tự xuống dòng mà hàm

>>> filename = "diary980.md"
>>> with open[filename] as diary_file:
..     n = 1
..     for line in diary_file:
..         print[n, line]
..         n += 1
...
0 in ra hoặc chúng ta cần xóa các ký tự xuống dòng khỏi mỗi dòng trong tệp của mình khi chúng ta in chúng ra

________số 8_______

Chúng tôi đang sử dụng phương pháp chuỗi

>>> filename = "diary980.md"
>>> with open[filename] as diary_file:
..     n = 1
..     for line in diary_file:
..         print[n, line]
..         n += 1
...
5 ở đây để "tước" các ký tự dòng mới từ phía bên trái [phần đầu] của mỗi chuỗi
>>> filename = "diary980.md"
>>> with open[filename] as diary_file:
..     n = 1
..     for line in diary_file:
..         print[n, line]
..         n += 1
...
6 của chúng tôi ngay trước khi in mỗi dòng

Các đối tượng tệp là các lần lặp lười biếng

Các đối tượng tệp trong Python là các lần lặp lười biếng, có nghĩa là chúng ta có thể xử lý chúng theo cách tương tự như bất kỳ lần lặp nào khác

Vì vậy, thay vì đếm ngược theo cách thủ công, chúng ta có thể chuyển đối tượng tệp của mình sang hàm

>>> filename = "diary980.md"
>>> with open[filename] as diary_file:
..     n = 1
..     for line in diary_file:
..         print[n, line]
..         n += 1
...
7 tích hợp. Hàm
>>> filename = "diary980.md"
>>> with open[filename] as diary_file:
..     n = 1
..     for line in diary_file:
..         print[n, line]
..         n += 1
...
7 sau đó có thể thực hiện việc đếm cho chúng ta khi chúng ta lặp

>>> filename = "diary980.md"
>>> with open[filename] as diary_file:
..     for n, line in enumerate[diary_file, start=1]:
..         print[n, line.rstrip['\n']]

Chúng tôi đã xóa hai dòng mã nhưng chúng tôi nhận được đầu ra giống như trước đây

1 Python Log -- Day 980
2
3 Today I learned about metaclasses.
4 Metaclasses are a class's class.
5 Meaning every class is an instance of a metaclass.
6 The default metaclass is "type".
7
8 Classes control features [like string representations] of all their instances.
9 Metaclasses can control similar features for their classes.
10
11 I doubt I'll ever need to make a metaclass, at least not for production code.

Lặp lại các tệp để đọc từng dòng một

Các tệp là các lần lặp lười biếng và khi chúng tôi lặp qua một đối tượng tệp, chúng tôi sẽ nhận được các dòng từ tệp đó

Khi Python đọc từng dòng một tệp, nó không lưu trữ toàn bộ tệp trong bộ nhớ cùng một lúc. Thay vào đó, nó lưu trữ một bộ đệm nhỏ gồm các dòng sắp tới trong tệp đó, vì vậy nó tiết kiệm bộ nhớ hơn

Điều đó có nghĩa là việc lặp qua các tệp theo từng dòng đặc biệt quan trọng nếu bạn đang làm việc với các tệp thực sự lớn

Readline có chuyển sang dòng tiếp theo không?

Phương thức readline đọc một dòng từ tệp và trả về dưới dạng một chuỗi. Chuỗi do readline trả về sẽ chứa ký tự xuống dòng ở cuối .

Đường đọc [] trong Python là gì?

Phương thức readline[] trả về một dòng từ tệp . Bạn cũng có thể chỉ định bao nhiêu byte từ dòng để trả về, bằng cách sử dụng tham số kích thước.

Làm thế nào để readline[] biết vị trí của từng dòng?

readline đọc từng dòng theo thứ tự. Nó bắt đầu bằng cách đọc các đoạn của tệp từ đầu. Khi gặp dấu ngắt dòng, nó sẽ trả về dòng đó . Mỗi lần gọi readline liên tiếp trả về dòng tiếp theo cho đến khi dòng cuối cùng được đọc.

Chủ Đề