Hướng dẫn how do i go back to the beginning of a file in python? - làm cách nào để quay lại phần đầu của tệp trong python?

Tôi chưa quen với Python và tôi đang học một số công cụ đọc tập tin cơ bản. Tôi đang cố gắng đọc một tệp và đếm số dòng mới và cũng in các dòng bắt đầu bằng 'từ:'.

Đây là mã tôi có cho điều đó:

fhand = open['mbox.txt']

count = 0

for line in fhand:

      count = count + 1

print count

for line in fhand:

    if line.startswith['From: ']:

          print line

Tôi biết rằng tôi có thể làm điều này trong một vòng lặp nhưng tôi đang cố gắng học một cái gì đó ở đây. Ngay sau khi vòng lặp đầu tiên được thực thi, 'dòng' ở cuối tệp. Vì vậy, khi nó chạy vòng lặp thứ hai, nó không in bất cứ điều gì. Tôi đã thử đặt xếp hàng = 0, nó không hoạt động. Làm thế nào để tôi trở lại để bắt đầu tập tin?

Cảm ơn sự giúp đỡ của bạn.

Hỏi ngày 12 tháng 10 năm 2016 lúc 17:21Oct 12, 2016 at 17:21

file.seek[0]

Seek [] lấy một đối số quay trở lại "byte" đó, vì vậy 0 byte sẽ quay lại bắt đầu tệp.

Đã trả lời ngày 12 tháng 10 năm 2016 lúc 17:23Oct 12, 2016 at 17:23

1

Thử thứ này đi :

with open['mbox.txt'] as f:
    count = 0
    for l in f.readlines[]:
        count += 1
        if l.startswith['From: ']:
            print l

Để quay lại để bắt đầu sử dụng tệp seek[0]

Đã trả lời ngày 12 tháng 10 năm 2016 lúc 17:23Oct 12, 2016 at 17:23

Thử thứ này đi :MMF

Để quay lại để bắt đầu sử dụng tệp seek[0]3 gold badges15 silver badges19 bronze badges

1 phút đọc

Đây là một cái gì đó tôi đã từng vấp ngã rất nhiều trong những ngày đầu cuộc phiêu lưu mã hóa Python của tôi vì vậy tôi nghĩ sẽ viết một bài viết nhanh về nó.

Python mở tập tin

Có thể đạt được một tệp để đọc hoặc ghi bằng Python bằng mã sau:

# Open file
file = open["/Python/Files/MyFile.txt"]

Python đọc tệp

Để đọc nội dung của tệp, chúng tôi chỉ cần sử dụng phương thức read []read[] method

# Read file to the end of file
file.read[]

'This is the first line\nAnd a second\nAnd even a third\nShall we put a fourth?\nWhy not a fifth\nOr a sixt\n'

Lưu ý rằng Python sẽ in ký tự mới và sẽ không phân chia các dòng cho bạn [nhưng tài liệu đó cho một ngày/bài đăng khác]

Văn bản của tôi ở đâu?

Giả sử bạn muốn in lại lần phát hành nội dung tệp cùng một lệnh sẽ để lại cho bạn một cái gì đó như thế này

# Read file again
file.read[]
''

Không có nhiều thứ để xem trên màn hình, vậy nội dung tập tin của chúng tôi đã đi đâu?

Python Seek []

Khi Python đọc nội dung tệp, nó sẽ di chuyển vị trí hiện tại của tệp vào cuối tệp, vì vậy cố gắng đọc lại nó sẽ mang lại kết quả trên. Không có gì vì không có gì khác để đọc.

Bạn có thể dễ dàng quay lại đầu tệp với phương thức Seek [] được sử dụng như thế này:

# Go back to position 0
# Or beginning of file
file.seek[0, 0]

  • Syntax of Seek [] Phương thức fileObject.Seek [offset [, whence]] fileObject.seek[offset[, whence]]

  • Offset là vị trí của con trỏ đọc/ghi trong tệp. is the position of the read/write pointer within the file.

  • từ đó là tùy chọn và mặc định là 0, có nghĩa là định vị tệp tuyệt đối, các giá trị có thể 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 tệp cuối tệp is optional and defaults to 0 which means absolute file positioning, other possible values are 1 which means seek relative to the current position and 2 which means seek relative to the file’s end

Bây giờ nếu bạn cố đọc lại tệp, tất cả nội dung sẽ được hiển thị chính xác

file.read[]

'This is the first line\nAnd a second\nAnd even a third\nShall we put a fourth?\nWhy not a fifth\nOr a sixt\n'

Bài Viết Liên Quan

Chủ Đề