Python đọc n dòng cuối cùng của tệp

Tại đây, bạn sẽ thấy cách đọc các dòng n cuối cùng từ một tệp trong PHP, trong đó n có thể được thay thế bằng bất kỳ số nguyên dương nào, chẳng hạn như, 1, 2, 5, 10, v.v. Nói chung, hầu hết các lần bạn có thể sử dụng để đọc tệp theo hướng thuận, tôi. e. , từ đầu tệp và áp dụng một số logic xử lý nghiệp vụ trên dữ liệu tệp theo yêu cầu của ứng dụng

Đôi khi bạn cần đọc một tập tin theo hướng ngược lại, tôi. e. , từ cuối tệp và bạn có thể cần trích xuất một vài dòng cuối cùng từ tệp cho nhu cầu của ứng dụng của bạn. Sau đó, bạn có thể sử dụng một trong các giải pháp từ đoạn mã bên dưới

Tôi sẽ sử dụng tệp văn bản trong ví dụ này. Tệp mẫu có thể được tải xuống sau từ liên kết mã nguồn được cung cấp ở cuối hướng dẫn này

bài viết liên quan

  • Cách đọc n dòng cuối cùng từ một tệp bằng Java
  • Cách đọc n dòng cuối cùng từ một tệp bằng Python

điều kiện tiên quyết

Máy chủ HTTP Apache 2. 4 (Tùy chọn), PHP 7. 4. 3 – 7. 4. 27

thư mục dự án

Giả định rằng bạn đã thiết lập Apache và PHP trong hệ thống Windows

Bây giờ tôi sẽ tạo một thư mục gốc của dự án có tên php-file-read-last-n-lines trong thư mục htdocs của máy chủ Apache hoặc nếu bạn không sử dụng máy chủ HTTP Apache thì bạn có thể tạo thư mục dự án ở bất kỳ đâu trong ổ đĩa vật lý

Tôi có thể không đề cập đến thư mục gốc của dự án trong các phần tiếp theo và tôi sẽ cho rằng tôi đang nói về thư mục gốc của dự án

Đọc n dòng cuối cùng

Tệp của bạn có thể nhỏ, vừa hoặc lớn tùy thuộc vào yêu cầu của dự án của bạn và ở đây tôi sẽ trình bày hai giải pháp khác nhau mà bạn có thể sử dụng tùy theo nhu cầu của mình

Giải pháp – Một

Khi bạn cần trích xuất vài dòng cuối cùng từ một tệp nhỏ thì bạn có thể sử dụng giải pháp bên dưới

File giấy phép mẫu. txt có sẵn trong liên kết mã nguồn

 0) {
		for ($i = $readLines; $i < count($file); $i++) {
			echo $file[$i];
			echo nl2br("\n");
		}
	} else {
		echo 'file does not have required no. of lines to read';
	}

?>

Giải pháp trên sẽ tiêu tốn nhiều bộ nhớ, vì vậy nếu tệp của bạn nhỏ thì chỉ sử dụng giải pháp trên

Thực thi đoạn mã trên sẽ cung cấp cho bạn đầu ra sau giả sử n=10

Python đọc n dòng cuối cùng của tệp

Giải pháp – Hai

Giải pháp này sẽ hoạt động đối với tệp nhỏ cũng như tệp rất lớn của bạn. Tôi sẽ sử dụng ở đây SplFileObject để giảm chi phí bộ nhớ. Sử dụng phương pháp seek() để lấy dòng cuối cùng. Sau đó, bạn nên trừ giá trị khóa hiện tại bằng n, trong đó n là số nguyên dương khác không

seek(PHP_INT_MAX);
	$last_line = $file->key();
	$lines = new LimitIterator($file, $last_line - n, $last_line); //n being non-zero positive integer
	print_r(iterator_to_array($lines));
	
	// Iterate each element
	/*$it = iterator_to_array($lines);
	
	foreach($it as $ele){
		echo nl2br($ele . "\n");
	}*/
?>

Thực thi đoạn mã trên sẽ cung cấp cho bạn đầu ra sau giả sử n=10

Python đọc n dòng cuối cùng của tệp

Lưu ý rằng lớp SplFileObject có thuộc tính riêng chứa con trỏ tệp. Do đó, không có phương pháp nào để đóng bộ điều khiển tệp và bạn gặp phải tình huống không thể xóa tệp bằng phương pháp

seek(PHP_INT_MAX);
	$last_line = $file->key();
	$lines = new LimitIterator($file, $last_line - n, $last_line); //n being non-zero positive integer
	print_r(iterator_to_array($lines));
	
	// Iterate each element
	/*$it = iterator_to_array($lines);
	
	foreach($it as $ele){
		echo nl2br($ele . "\n");
	}*/
?>
2, bởi vì một SplFileObject vẫn còn một bộ điều khiển đang mở. Sau đó, bạn phải thực hiện một số cách giải quyết theo cách sau để xóa tệp

Hướng dẫn này sẽ chỉ cho bạn cách đọc n dòng cuối cùng từ tệp bằng ngôn ngữ lập trình Python. N dòng cuối cùng có nghĩa là, 5 dòng cuối cùng hoặc 10 dòng cuối cùng, v.v. Vì vậy, n có thể được thay thế bằng bất kỳ giá trị nguyên dương nào

Nói chung, bạn đọc tệp từ đầu nhưng đôi khi vì yêu cầu kinh doanh của bạn, bạn có thể cần đọc tệp từ cuối. Vì vậy, bạn có thể cần đọc tệp từ đầu bằng bất kỳ công nghệ nào. Ở đây tôi sẽ chỉ cho bạn cách đọc n dòng cuối cùng từ tệp bằng Python

Bạn cũng có thể đọc hướng dẫn tương tự về cách đọc n dòng cuối bằng Java và PHP

điều kiện tiên quyết

Trăn 3. 8. 5

Đọc n dòng cuối cùng

Tôi đã định nghĩa một hàm có tên là tail() nhận ba đối số – tên tệp, số dòng để đọc từ cuối và kích thước khối theo byte

Đối số đầu tiên, tên tệp, là bắt buộc và hai đối số khác là tùy chọn vì tôi đã cung cấp các giá trị mặc định cho chúng

def tail(file, n=1, bs=1024):
    f = open(file)
    f.seek(0,2)
    l = 1-f.read(1).count('\n')
    B = f.tell()
    while n >= l and B > 0:
            block = min(bs, B)
            B -= block
            f.seek(B, 0)
            l += f.read(block).count('\n')
    f.seek(B, 0)
    l = min(l,n)
    lines = f.readlines()[-l:]
    f.close()
    return lines

Trong hàm tail() ở trên, chúng tôi sử dụng hàm seek() tích hợp sẵn của Python có các tính năng sau

seek() đặt vị trí hiện tại của tệp ở phần bù. Đối số wherece là tùy chọn và mặc định là 0, có nghĩa là vị trí tệp tuyệt đối, các giá trị khác là 1 có nghĩa là tìm kiếm liên quan đến vị trí hiện tại và 2 có nghĩa là tìm kiếm liên quan đến phần cuối của tệp. không có giá trị quay lại

Làm thế nào bạn sẽ đọc n dòng cuối cùng của một tập tin?

Để xem vài dòng cuối cùng của tệp, hãy sử dụng lệnh tail . đuôi hoạt động giống như đầu. nhập đuôi và tên tệp để xem 10 dòng cuối cùng của tệp đó hoặc nhập tên tệp đuôi -number để xem các dòng số cuối cùng của tệp.

Python đại diện cho phần cuối của một dòng khi đọc tệp như thế nào?

Để chia tệp thành các dòng, có một ký tự đặc biệt đại diện cho “cuối dòng” được gọi là ký tự xuống dòng. Trong Python, chúng tôi biểu thị ký tự xuống dòng dưới dạng a dấu gạch chéo ngược-n trong hằng chuỗi .