Tôi đang viết một chương trình sẽ phân tích tệp nhật ký Apache định kỳ để ghi lại khách truy cập, sử dụng băng thông, v.v. Vấn đề là, tôi không muốn mở dữ liệu nhật ký và phân tích cú pháp mà tôi đã phân tích cú pháp. Ví dụ:
Nếu tôi phân tích tệp đó, tôi sẽ lưu tất cả các dòng sau đó lưu độ bù đó. Bằng cách đó, khi tôi phân tích lại nó một lần nữa, tôi nhận được:
Vòng thứ hai, tôi sẽ nhận được line4 và line5. Hy vọng rằng điều này có ý nghĩa ... Những gì tôi cần biết là, làm thế nào để tôi hoàn thành điều này? Python có hàm seek () để chỉ định phần bù ... vì vậy tôi chỉ lấy tệp của nhật ký (tính bằng byte) sau khi phân tích cú pháp sau đó sử dụng nó như phần bù (trong seek ()) lần thứ hai tôi đăng nhập? Tôi dường như không thể nghĩ ra một cách để viết mã này>.
Như chúng ta có thể thấy trong mã ở trên, phần bù nhảy sang đầu tệp khi chúng tôi đưa ra đối số của 0 0 trong chức năng SET. Và giá trị bù như được hiển thị trong đầu ra sẽ là:offset is the position of the read/write pointer within the file. offset is used later on to perform operations within the text file depending on the permissions given, like read, write, etc. Điều kiện tiên quyết: Seek (), Tell ()
Hãy để hiểu điều này với việc thực hiện từng bước thông minh:Bước 1: Tạo tệp văn bản.Creating a text file. Hãy để tạo ra một tệp văn bản, email.txt, có chứa nhiều email để chứng minh hoạt động của Offset: Python3
4 3 6Điều này tạo ra một tệp email email.txt, và điền vào email. Bước 2: Hãy để kiểm tra nội dung của tệp email.txt mà chúng tôi vừa tạo bằng cách viết mã này:Let’s check the content of the emails.txt file that we just created by writing this code : Python3
The default position of offset is: 05 The default position of offset is: 06 6Output: Bước 3: Sau khi tạo tệp email.TXT. Chúng tôi đã đọc nó bằng cách mở nó một lần nữa, lần này với các quyền đọc, điều này đặt một phần bù có tên là F FHER, đến đầu tệp, tức là ở vị trí 0. Chúng tôi có thể kiểm tra xem bằng cách sử dụng mã này: Python3
The default position of offset is: 05 First 40 Characters : stephen.marqu7 First 40 Characters : stephen.marqu8 3Output: The default position of offset is: 0 Bước 3:We write a program that asks the user to enter the number of characters they want to see from the beginning of the file. Python3Sau khi tạo tệp email.TXT. Chúng tôi đã đọc nó bằng cách mở nó một lần nữa, lần này với các quyền đọc, điều này đặt một phần bù có tên là F FHER, đến đầu tệp, tức là ở vị trí 0. Chúng tôi có thể kiểm tra xem bằng cách sử dụng mã này: Bước 4: Chúng tôi viết một chương trình yêu cầu người dùng nhập số lượng ký tự họ muốn xem từ đầu tệp. The default position of offset is: 05 First 40 Characters : stephen.marqu7 Current position of the offset: 418 Current position of the offset: 419 Output: First 40 Characters : stephen.marqu Current position of the offset: 410 = Current position of the offset: 412 40 characters.
Python3Ở đây tôi đã nhập để hiển thị 40 ký tự. The default position of offset is: 05 ( Offset after using seek function : 05 Offset after using seek function : 06 Output: Current position of the offset: 41 Bước 5: Sau đó, chúng tôi kiểm tra vị trí của phần bù bằng cách sử dụng hàm Tell (). Chúng tôi sử dụng mã này:
Python3Bằng cách bao gồm 40 ký tự, phần bù hiện có được vị trí thứ 41. & NBSP; The default position of offset is: 05 ( fhand 4Offset after using seek function : 06 6Output: Offset after using seek function : 0 Bước 6: Bây giờ, nếu chúng ta muốn thay đổi vị trí hiện tại của phần bù thành bất kỳ vị trí nào chúng ta muốn, chúng ta có thể làm điều đó bằng cách sử dụng hàm Seek (). Bằng cách, vượt qua vị trí mà chúng tôi muốn phần bù được thực hiện, như một đối số cho hàm tìm kiếm, chúng ta có thể thực hiện bù, nhảy đến vị trí đó. Chúng tôi có thể xác nhận bằng cách sử dụng mã này: |