Hướng dẫn python go to beginning of file - python đi đến đầu tập tin

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

file.seek[0]
2

Đã 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

file.seek[0]
23 gold badges15 silver badges19 bronze badges


Sự mô tả

Phương thức tệp Python Seek [] đặt vị trí hiện tại của tệp ở phần bù. Đối số 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ị 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 đầu của tệp.seek[] sets the file's current position at the offset. The whence argument is optional and defaults to 0, which means absolute file positioning, other values are 1 which means seek relative to the current position and 2 means seek relative to the file's end.

Không có giá trị quay lại. Lưu ý rằng nếu tệp được mở để thêm bằng cách sử dụng 'A' hoặc 'A+', thì mọi hoạt động Seek [] sẽ được hoàn tác ở lần ghi tiếp theo.

Nếu tệp chỉ được mở để viết ở chế độ phụ trợ bằng cách sử dụng 'A', phương thức này về cơ bản là không có op, nhưng nó vẫn hữu ích cho các tệp được mở ở chế độ phụ lục khi đọc được bật [chế độ 'A+'].

Nếu tệp được mở ở chế độ văn bản bằng cách sử dụng 't', chỉ có độ lệch được trả về bởi Tell [] là hợp pháp. Sử dụng các độ lệch khác gây ra hành vi không xác định.

Lưu ý rằng không phải tất cả các đối tượng tệp đều có thể tìm kiếm.

Cú pháp

Sau đây là Syntax for Seek [] phương thức -seek[] method −

fileObject.seek[offset[, whence]]

Thông số

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

  • từ đó - đây 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ị 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 so với đầu của tệp. − This is optional and defaults to 0 which means absolute file positioning, other values are 1 which means seek relative to the current position and 2 means seek relative to the file's end.

Giá trị trả về

Phương pháp này không trả về bất kỳ giá trị nào.

Thí dụ

Ví dụ sau đây cho thấy cách sử dụng phương thức Seek [].

Python is a great language
Python is a great language
#!/usr/bin/python

# Open a file
fo = open["foo.txt", "rw+"]
print "Name of the file: ", fo.name

# Assuming file has following 5 lines
# This is 1st line
# This is 2nd line
# This is 3rd line
# This is 4th line
# This is 5th line

line = fo.readline[]
print "Read Line: %s" % [line]

# Again set the pointer to the beginning
fo.seek[0, 0]
line = fo.readline[]
print "Read Line: %s" % [line]

# Close opend file
fo.close[]

Khi chúng tôi chạy trên chương trình, nó tạo ra kết quả sau -

Name of the file:  foo.txt
Read Line: Python is a great language.

Read Line: Python is a great language.

python_files_io.htm

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:

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.seek[0]
1

Bài Viết Liên Quan

Chủ Đề