Hướng dẫn how do you skip the last line while reading a file in python? - làm cách nào để bỏ qua dòng cuối cùng khi đọc tệp trong python?

Dưới đây là một phương thức để có được các dòng giữa hai số dòng trong một tệp:

import sys

def file_line(name,start=1,end=sys.maxint):
    lc=0
    with open(s) as f:
        for line in f:
            lc+=1
            if lc>=start and lc<=end:
                yield line


s='/usr/share/dict/words'
l1=list(file_line(s,235880))
l2=list(file_line(s,1,10))
print l1
print l2

Output:

['Zyrian\n', 'Zyryan\n', 'zythem\n', 'Zythia\n', 'zythum\n', 'Zyzomys\n', 'Zyzzogeton\n']
['A\n', 'a\n', 'aa\n', 'aal\n', 'aalii\n', 'aam\n', 'Aani\n', 'aardvark\n', 'aardwolf\n', 'Aaron\n']

Chỉ cần gọi nó bằng một tham số để đi từ dòng N -> EOF

Trong bài viết này sẽ xem cách bỏ qua một dòng trong một tệp trong Python. Có nhiều cách để làm điều đó. Trong bài viết này, chúng tôi sẽ thảo luận về hai cách tiếp cận.

1. Sử dụng phương thức readlines ()

Phương thức ReadLines () đọc một tệp và trả về một danh sách. Ở đây, mỗi mục của một danh sách chứa một dòng của tệp, tức là, danh sách [0] sẽ có dòng đầu tiên, danh sách [1] dòng thứ hai, v.v.readlines() method reads a file and returns a list. Here, each item of a list contains a line of the file, i.e., list[0] will have the first line, list[1] the second line, and so on.

Vì nó là một danh sách, chúng tôi có thể lặp lại nó. Khi số dòng hiện tại bằng số dòng mà chúng tôi muốn bỏ qua, chúng tôi bỏ qua dòng đó. Nếu không, chúng tôi xem xét nó.

Hãy xem xét ví dụ sau trong đó chúng tôi in tất cả các dòng, ngoại trừ bản mà chúng tôi muốn bỏ qua.

def skipLine(f, skip):
  lines = f.readlines()
  skip = skip - 1 #index of the list starts from 0

  for line_no, line in enumerate(lines):
    if line_no==skip:
      pass
    else:
      print(line, end="")

Hãy cùng thử mã trên bằng cách bỏ qua dòng đầu tiên của tệp mẫu.txt.sample.txt file.

sample.txt

This is a sample file.
Python is a very powerful programming language.
Let's see how to skip a line in Python.
It is very easy.
I love Python. It makes everything so fun.
try:
  f = open("sample.txt", "r")
  skipLine(f, 1) 
finally:
  f.close()

Hướng dẫn how do you skip the last line while reading a file in python? - làm cách nào để bỏ qua dòng cuối cùng khi đọc tệp trong python?

Đầu ra

Python is a very powerful programming language.
Let's see how to skip a line in Python.
It is very easy.
I love Python. It makes everything so fun.

Bây giờ, hãy bỏ qua dòng thứ 3.rd line.

try:
  f = open("sample.txt", "r")
  skipLine(f, 3) 
finally:
  f.close()

Đầu ra

This is a sample file.
Python is a very powerful programming language.
It is very easy.
I love Python. It makes everything so fun.

Bây giờ, hãy bỏ qua dòng thứ 3.

Nếu bạn vượt qua một giá trị lớn hơn tổng số dòng hoặc nhỏ hơn 1, thì sẽ không có gì xảy ra.

2. Sử dụng phương thức readlines () và cắt giảm danh sáchreadlines() method returns a list, we can perform slicing to skip a specific line. Consider the following example.

def skipLineSlicing(f, skip):
  skip -= 1 #index of list starts from 0
  if skip < 0: # if the skip is negative, then don't make any changes in the list
    skip= 1
  lines = f.readlines()
  lines = lines[0:skip] + lines[skip+1:len(lines)]
  for line in lines:
    print(line, end="")

Vì phương thức Readlines () trả về một danh sách, chúng ta có thể thực hiện cắt lát để bỏ qua một dòng cụ thể. Xem xét các ví dụ sau.sample.txt file.

try:
  f = open("sample.txt", "r")
  skipLineSlicing(f, 5) 
finally:
  f.close()

Đầu ra

['Zyrian\n', 'Zyryan\n', 'zythem\n', 'Zythia\n', 'zythum\n', 'Zyzomys\n', 'Zyzzogeton\n']
['A\n', 'a\n', 'aa\n', 'aal\n', 'aalii\n', 'aam\n', 'Aani\n', 'aardvark\n', 'aardwolf\n', 'Aaron\n']
0

Hướng dẫn how do you skip the last line while reading a file in python? - làm cách nào để bỏ qua dòng cuối cùng khi đọc tệp trong python?

Bây giờ, hãy bỏ qua dòng thứ 3.

Để đọc dòng cuối cùng của một tệp trong Python mà không lưu trữ toàn bộ tệp trong bộ nhớ:

  1. Vòng lặp qua từng dòng trong tệp. through each line in the file.
  2. Bỏ qua từng dòng cho đến khi bạn đạt đến dòng cuối cùng. each line until you reach the last line.
  3. Lưu dòng cuối cùng trong bộ nhớ. the last line in memory.

Đây là một ví dụ:

['Zyrian\n', 'Zyryan\n', 'zythem\n', 'Zythia\n', 'zythum\n', 'Zyzomys\n', 'Zyzzogeton\n']
['A\n', 'a\n', 'aa\n', 'aal\n', 'aalii\n', 'aam\n', 'Aani\n', 'aardvark\n', 'aardwolf\n', 'Aaron\n']
1

Cách tiếp cận ngây thơ

Cách tiếp cận ngây thơ nhất để đọc dòng cuối cùng của một tệp trong Python là:

  1. Đọc toàn bộ dòng tệp từng dòng vào một danh sách. the entire file line by line into a list.
  2. Truy cập yếu tố cuối cùng của danh sách đó. the last element of that list.

Đây là mã:

['Zyrian\n', 'Zyryan\n', 'zythem\n', 'Zythia\n', 'zythum\n', 'Zyzomys\n', 'Zyzzogeton\n']
['A\n', 'a\n', 'aa\n', 'aal\n', 'aalii\n', 'aam\n', 'Aani\n', 'aardvark\n', 'aardwolf\n', 'Aaron\n']
2

Nếu bạn có một tệp lớn mà bạn không muốn lưu trữ trong bộ nhớ hoặc lặp qua cách bạn đã thấy trước đó, bạn có thể dựa vào việc tìm kiếm tệp.

Để tìm dòng cuối cùng của một tệp lớn trong Python bằng cách tìm kiếm:

  1. Mở tệp ở chế độ nhị phân. the file in binary mode.
  2. Tìm kiếm đến cuối tập tin. to the end of the file.
  3. Nhảy lại các nhân vật để tìm sự khởi đầu của dòng cuối cùng. back the characters to find the beginning of the last line.

Đây là cách nó trông trong mã:

['Zyrian\n', 'Zyryan\n', 'zythem\n', 'Zythia\n', 'zythum\n', 'Zyzomys\n', 'Zyzzogeton\n']
['A\n', 'a\n', 'aa\n', 'aal\n', 'aalii\n', 'aam\n', 'Aani\n', 'aardvark\n', 'aardwolf\n', 'Aaron\n']
3

Tuy nhiên, bằng cách xem mã, không có gì tầm thường để hiểu cách thức hoạt động của nó.

Làm thế nào để tập tin tìm kiếm công việc trong Python

Để đọc dòng cuối cùng của một tệp bằng cách tìm kiếm trong Python, đầu đọc tệp được di chuyển ở ký tự cuối cùng của tệp. Sau đó, người đọc nhảy về phía sau nhân vật cho đến khi nó đến đầu dòng cuối cùng. Sau đó, nó đọc dòng cuối cùng vào bộ nhớ.beginning of the last line. Then it reads the last line into memory.

Dưới đây là một minh họa về cách mã tìm thấy dòng cuối cùng trong một tệp có ba dòng văn bản:

Hướng dẫn how do you skip the last line while reading a file in python? - làm cách nào để bỏ qua dòng cuối cùng khi đọc tệp trong python?

Hãy cùng xem mã chi tiết hơn một chút.

Trước hết, tìm kiếm có nghĩa là đặt vị trí đầu đọc tệp trong tệp.

Trong Python, bạn chỉ có thể tìm kiếm các tệp nhị phân, vì vậy bạn cần đọc tệp dưới dạng tệp nhị phân.

Phương thức Seek () tuân theo cú pháp này:seek() method follows this syntax:

['Zyrian\n', 'Zyryan\n', 'zythem\n', 'Zythia\n', 'zythum\n', 'Zyzomys\n', 'Zyzzogeton\n']
['A\n', 'a\n', 'aa\n', 'aal\n', 'aalii\n', 'aam\n', 'Aani\n', 'aardvark\n', 'aardwolf\n', 'Aaron\n']
4

Where:

& Nbsp; offset & nbsp; chỉ định số lượng ký tự để di chuyển. Sử dụng một giá trị âm để di chuyển về phía sau.offset specifies how many characters to move. Use a negative value to move backward.

Đối số & nbsp; whence & nbsp; là một đối số tùy chọn có thể được đặtwhence argument is an optional argument that can be set

  • os.seek_set & nbsp; hoặc 0, tìm kiếm liên quan đến sự khởi đầu của tệp. or 0—seek relative to the begining of the file.
  • os.seek_cur & nbsp; hoặc 1 tìm kiếm liên quan đến vị trí hiện tại trong tệp. or 1—seek relative to the current position in the file.
  • os.seek_end & nbsp; hoặc 2, tìm kiếm liên quan đến cuối tệp. or 2—seek relative to the end of the file.

Trước hết, hãy để đơn giản hóa mã ở trên một chút bằng cách xóa xử lý lỗi và các hằng số mô -đun HĐH:os module constants:

['Zyrian\n', 'Zyryan\n', 'zythem\n', 'Zythia\n', 'zythum\n', 'Zyzomys\n', 'Zyzzogeton\n']
['A\n', 'a\n', 'aa\n', 'aal\n', 'aalii\n', 'aam\n', 'Aani\n', 'aardvark\n', 'aardwolf\n', 'Aaron\n']
5

Bây giờ bạn đã hiểu phương thức Seek () hoạt động như thế nào, bạn có thể hiểu mã:seek() method works, you can understand the code:

  • file.seek (-2, 2) có nghĩa là nhảy lên ký tự thứ 2 trước khi kết thúc tệp. means “Jump to the 2nd character before the end of the file”.
  • File.Read (1) có nghĩa là đọc ký tự từ bên phải. means “Read the character from the right”.
  • file.seek (-2, 1) có nghĩa là nhảy 2 ký tự còn lại từ ký tự hiện tại. means “Jump 2 characters left from the current character”.
  • Bát \ n, là ký tự ngắt dòng ở chế độ nhị phân. is the line break character in binary mode.
  • file.Readline (). Decode () đọc dòng và chuyển đổi nó từ chuỗi nhị phân sang chuỗi. reads the line and converts it from binary to string.

Vì vậy, quá trình như sau:

  • Mã đầu tiên nhảy đến ký tự cuối cùng của tệp.
  • Sau đó, nó kiểm tra xem ký tự là ký tự ngắt dòng.
  • Nếu nó không, thì nó sẽ nhảy trở lại một ký tự và kiểm tra lại.
  • Nó lặp đi lặp lại điều này cho đến khi gặp phải sự phá vỡ dòng, điều này cho thấy rằng sự khởi đầu của dòng cuối cùng đã đạt được.
  • Sau đó, nó lưu trữ dòng cuối cùng trong bộ nhớ.

Lưu ý rằng việc tìm kiếm một tệp chỉ hoạt động với các tệp nhị phân. Đây là lý do tại sao tệp được đọc ở chế độ nhị phân. Ngoài ra, lưu ý rằng khi bạn đang xử lý một tệp nhị phân, bạn cần phải nhảy hai ký tự còn lại để đọc một ký tự sang phải.

Bây giờ, hãy để Lừa mang lại xử lý lỗi thử để đảm bảo tệp không dài chính xác một dòng. Bởi vì nếu có, Seek () sẽ không bao giờ gặp phải ký tự phá vỡ dòng như không có. Chúng ta cũng hãy sử dụng mô -đun HĐH Hằng số Seek_end và Seek_cur thay vì đơn giản 1 hoặc 2:seek() will never encounter a line break character as there are none. Let’s also use the os module’s constants SEEK_END and SEEK_CUR instead of plain 1 or 2:

['Zyrian\n', 'Zyryan\n', 'zythem\n', 'Zythia\n', 'zythum\n', 'Zyzomys\n', 'Zyzzogeton\n']
['A\n', 'a\n', 'aa\n', 'aal\n', 'aalii\n', 'aam\n', 'Aani\n', 'aardvark\n', 'aardwolf\n', 'Aaron\n']
3

Bây giờ bạn đã học được cách tiếp cận tìm kiếm hoạt động khi đọc dòng cuối cùng của một tệp trong Python.

Sự kết luận

Hôm nay bạn đã học được 3 cách để đọc dòng cuối cùng của một tệp trong Python:

  1. Bỏ qua các tập tin đến dòng cuối cùng. through the file all the way to the last line.
  2. Đọc toàn bộ tệp trong bộ nhớ và truy cập dòng cuối cùng. the entire file in memory, and access the last line.
  3. Tìm kiếm đến cuối tập tin và đọc dòng cuối cùng. to the end of the file and read the last line.

Chọn một thứ phù hợp nhất với nhu cầu của bạn.

Tôi hy vọng bạn thấy nó hữu dụng.Cảm ơn vì đã đọc!

Đọc thêm

Thủ thuật Python

Cách ghi vào một tệp trong Python

Với tuyên bố trong Python