2016-04-07 29 views
-1
while iter < 10: 
    //do some things(actual code is too long to post) 
     iter += 1 

    for line in code.splitlines(): 
     file = open("tile.txt", "w+") 
     file.write(line) 
     print(" "+line) 

У меня есть это для цикла в конце, и когда я распечатываю переменную «строка» в командной строке, она отлично работает. Однако я хочу написать все значения «линии» на каждой итерации цикла while в файл. Моя проблема заключается в том, что она только выписывает значение строки на последней итерации. Любая помощь ?Пишите в файл python

ответ

2

Вы должны открыть файл в режиме добавления. Кроме того, как более вещий способ для работы с файлами лучше использовать with заявление для открытия файлов, которые будут закрывать файл в конце блока:

with open("tile.txt", "a+") as f: 
    for line in code.splitlines(): 
     f.write(line + '\n') # Add new line at the end of each line 
     print(" "+line) 

Вы также можете использовать file.writelines() метод для того, чтобы написать сразу несколько строк в вашем файле, но в этом случае вы все равно можете использовать режим w+.

+0

Заметим, что 'f.write (строка)' не добавляет завершающий символ новой строки, так что если вы хотите все на своей собственной линии вы должны использовать 'f.write (линия +«\ п»)' –

+0

@TylerS Да, благодарю за напоминание. Исправлена. – Kasramvd

1

вы должны открыть файл один раз вне цикла:

file = open("tile.txt", "w+") 
while iter < 10: 
    //do some things(actual code is too long to post) 
     iter += 1 

    for line in code.splitlines(): 
     file.write(line) 
     print(" "+line) 
1

Каждый раз, когда вы ИТЭР через линию перезаписывает предыдущее значение вы написали, а не добавлять к нему:

file = open("tile.txt", "w+") 
for line in code.splitlines(): 
    file.write(line) 
    print(" "+line) 

Выше код должен предоставить вам все строки. Он открывает файл и внутри цикла, все значения записываются в файл. После окончания цикла вы должны закрыть файл, чтобы получить результат.

file.close()