2014-09-17 2 views
0

Я как-то в состоянии написать код ниже (принимая помощь от различных источников):Для цикла в питоне: выпуск Код

langs=['C','Java','Cobol','Python'] 

f1=open('a.txt','r') 

f2=open('abc.txt','w') 

for i in range(len(langs)): 

    for line in f1: 

     f2.write(line.replace('Frst languag','{}'.format(langs[i]))) 

f1.close() 

f2.close() 

Не знаю, почему для цикла не выполняется до конца. Поскольку каждый раз, когда я открываю txt, в txt сохраняется только «C». Я хочу, чтобы сценарий запускался, и в конце выполнения скрипта txt должен иметь последнее значение списка (здесь python)

+1

Лучше всего поместить весь код в один блок, чтобы люди могли копировать и вставить в редактор и воспроизвести вашу проблему. Поскольку вы читаете файл a.txt, вы также должны указать копию содержимого файла a.txt. – ZSG

+0

Сколько строк у вас в f1? – sbru

+2

При чтении строк из файла в Python вы указываете указатель на файл. После того, как вы прочтете все строки, указатель файла будет в конце, и итератор файла не даст больше строк. –

ответ

4

После первого прохода вашего внутреннего цикла f1 указывает на конец файл. Поэтому последующие проходы ничего не делают.

Самое легкое исправление заключается в перемещении f1=open('a.txt','r') непосредственно перед for line in f1:. Затем файл будет перечитан для каждого из ваших языков. (В качестве альтернативы, вы можете реструктурировать свою логику, чтобы одновременно обрабатывать все языки за один проход файла.)

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