2011-07-08 12 views
6

Tôi có tệp .txt mà tôi đã tạo với nhiều dòng.Python 3.2 - readline() đang bỏ qua các dòng trong tệp nguồn

khi tôi chạy vòng lặp for, với bộ đếm tích lũy, nó bỏ qua các dòng.

Nó bỏ qua dòng trên cùng, và bắt đầu với thứ hai, in thứ tư, thứ sáu, vv ...

gì được nó tôi đang thiếu?

** for your reading pleasure** 
def main(): 
    # Open file line_numbers.txt 
    data_file = open('line_numbers.txt', 'r') 

    # initialize accumulatior 
    count = 1 


    # Read all lines in data_file 
    for line in data_file: 
     # Get the data from the file 
     line = data_file.readline() 

     # Display data retrieved 
     print(count, ": ", line) 

     # add to count sequence 
     count += 1 
+0

Tôi nghĩ @Shelhammer đóng đinh nó. Tôi đoán nó là không rõ ràng rằng "trong" không đọc. Vâng, nó có. – Malvolio

Trả lời

6

Thử xóa "line = data_file.readline()" hoàn toàn? Tôi nghi ngờ "cho dòng trong data_file:" cũng là một hoạt động readline.

+0

Bây giờ nó không bỏ qua, nhưng đếm dòng trống của nó trên đầu ra? vì vậy thay vì 1-5, nó trở về 1 - 11 –

+0

Một lần nữa, hoàn hảo !!! Cảm ơn bạn!!! –

6

Bạn cho vòng lặp đang lặp qua data_file và readline() của bạn đang cạnh tranh với nó. Xóa dòng line = data_file.readline() mã của bạn cho kết quả này:

# Read all lines in data_file 
count = 1 
for line in data_file: 
    # Display data retrieved 
    print(count, ": ", line) 

    # add to count sequence 
    count += 1 
+0

hoàn hảo! Cảm ơn bạn! –

3

for line in data_file đã nhận được văn bản của mỗi dòng cho bạn - những cuộc gọi tiếp theo để readline sau đó nhận được sau dòng. Nói cách khác, việc xóa cuộc gọi đến readline sẽ làm những gì bạn muốn. Đồng thời, bạn không cần phải theo dõi của một biến ắc mình - python có một cách tích hợp để làm điều này bằng enumerate - nói cách khác:

data_file = open('line_numbers.txt', 'r') 
for count, line in enumerate(data_file): 
    ... 
+0

+1 cho 'enumerate()' – bernie

+0

Và để cải thiện OP, hãy cải thiện tốt hơn bằng cách sử dụng 'với mở ('line_numbers.txt') như data_file:' –

+0

+1 thực sự cho liệt kê(). Đừng quên con số đó từ số không, vì vậy khi in cho tiêu thụ của con người bạn thường muốn thêm một số vào số đếm. Hầu hết mọi người cảm thấy thoải mái hơn với đánh số dựa trên 1. – holdenweb