2013-10-02 4 views
0
def main(): 
    x = open("textfile.txt", "r") 
    #o = enumerate(x.readlines()) 

    for i in x: 
     print(i, end="") 



    x.close 
if __name__ == "__main__": main() 

Если я раскомментирую объект 'o', этот скрипт не будет запущен. Не мог бы кто-нибудь рассказать мне, почему это так? : python3.3Функция «enumerate» прерывает цикл? python3

ответ

0

Вы имеете в виду, что вы не получаете выход, верно?

Это потому, что x.readlines() не является генератором - на самом деле он считывает все данные из x. и затем дает это o, завернутый в счетчик.

так, когда вы делаете для г х:

там больше нет данных для чтения - ничего общего.

вы могли бы сделать: для г, текст в о: печать '% d:% s' % (я, текст)

и что будет работать ...

+0

Но я не изменить для цикла, когда я удаляю комментарий, im все еще читает из объекта 'x', я не звоню или не включаю 'o', но нет вывода, как это влияет на мой код? Извините, я noob :) – user2817436

+0

так, readlines будут читать строки из файла до EOF. 'for i in x' также имеет такое же поведение - итератор по файлу будет читать строку для каждого вызова до EOF. если вы выполните перечисление (x.readlines()), часть readlines() будет считывать все данные и получать EOF. то вы делаете «для i в x», но x уже находится в EOF, так что на самом деле ничего не происходит. вам нужно сбросить файл (либо закрыть/снова открыть, либо сделать x.seek (0), чтобы вернуть его в начало файла, а затем он будет работать. –

Смежные вопросы